2010-04-05 2 views
2

Я часто пишу классы со спецификацией экспорта/импорта DLL, но это, похоже, путает синтаксический синтаксис emacs. Я в конечном итоге что-то вроде:Неправильный отступ emacs в классе C++ со спецификацией экспорта DLL

class myDllSpec Foo { 
public: 
    Foo(void); 
}; 

Обратите внимание, что «общественность:» спецификация доступа отступа неправильно, а также все, что следует за ним.

Когда я спрашиваю Emacs, чтобы описать синтаксис в начале строки, содержащей общественности, я получаю возврат:

((label 352)) 

Если удалить myDllSpec, отступы правильно, и Emacs говорит мне, что синтаксис есть:

((inclass 352) (access-label 352)) 

Что кажется правильным и разумным. Поэтому я пришел к выводу, что синтаксический анализатор не способен обрабатывать спецификацию экспорта DLL, и это то, что вызывает проблемы с отступом.

К сожалению, я не знаю, как преподавать парсер о моих ярлыках. Кажется, что это довольно распространенная практика, поэтому я надеюсь, что есть способ обойти это.

ответ

2

От http://www.emacswiki.org/emacs/IndentingC#toc13 вы можете настроить стиль «microsoft».

падение это в вашем .emacs:

(c-add-style "microsoft" 
      '("stroustrup" 
       (c-offsets-alist 
       (innamespace . -) 
       (inline-open . 0) 
       (inher-cont . c-lineup-multi-inher) 
       (arglist-cont-nonempty . +) 
       (template-args-cont . +)))) 
(setq c-default-style "microsoft") 

или оставить по умолчанию и установить его вручную через M-x c-set-style к microsoft.

Ваш пример делает этот отступ:

class myDllSpec Foo { 
public: 
    Foo(void); 
}; 
Смежные вопросы