Emacs - добавление отступа переопределения

У меня есть умножение вложенного пространства имен:

namespace first {namespace second {namespace third {
              // emacs indents three times
    // I want to intend here
} } }

так emacs отступы к третьей позиции. Однако я просто хочу единственное добавление отступа.
Действительно ли возможно выполнить этот эффект просто?

23
задан user151019 12 December 2012 в 10:44
поделиться

4 ответа

Используйте столбец с абсолютным отступом внутри пространства имен:

(defconst my-cc-style
  '("gnu"
    (c-offsets-alist . ((innamespace . [4])))))

(c-add-style "my-cc-style" my-cc-style)

Затем используйте c-set-style , чтобы использовать свой собственный стиль.

Обратите внимание, что это работает только в c ++ - режиме , c-mode не знает «innamespace».

24
ответ дан 29 November 2019 в 01:38
поделиться

Если вы хотите просто ввести литерал табуляции, а не менять схему отступов в emacs, C-q TAB должен сработать.

1
ответ дан 29 November 2019 в 01:38
поделиться

К сожалению, я не думаю, что в emacs есть отдельный стиль для пространства имен внутри другого пространства имен. Если перейти к внутренней строке и выполнить C-c, C-o, то можно изменить стиль topmost-intro, а если выполнить customize-variable c-offsets-alist, то можно редактировать все различные варианты отступов, которые есть в emacs, но для вашего конкретного случая такого стиля не существует. Вам придется написать его вручную в elisp

.
1
ответ дан 29 November 2019 в 01:38
поделиться

Хорошо, похоже, это работает как минимум в emacs 21 и 22:

(defun followed-by (cases)
  (cond ((null cases) nil)
        ((assq (car cases) 
               (cdr (memq c-syntactic-element c-syntactic-context))) t)
        (t (followed-by (cdr cases)))))

(c-add-style  "foo"      
              `(( other . personalizations )
        (c-offsets-alist
         ( more . stuff )
         (innamespace
          . (lambda (x) 
          (if (followed-by 
               '(innamespace namespace-close)) 0 '+))))))

( первое решение не поддерживает конструкции типа

namespace X { namespace Y {
    class A;
    namespace Z {
        class B;
    }
}}

)

4
ответ дан 29 November 2019 в 01:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: