Emacs и vala-режим

Я использую vala-mode для редактирования кода Vala в Emacs. Однако я хочу изменить две вещи в режиме vala:

Я хочу сделать отступ 4 пробелами вместо 2 (это мой Emacs по умолчанию). Я хочу включить автозаполнение в режиме vala.

Автозаполнение работает во всех режимах, кроме vala-mode, и мне нужен отступ в 4 пробела только для vala-mode, а не для всех режимов. Однако я не знаю, как внести эти изменения только для vala-режима.

Спасибо.


person David Gomes    schedule 02.08.2012    source источник
comment
Я повторяю этот вопрос. Я попытался настроить некоторые параметры в режиме vala, добавив лямбды в vala-mode-hook, но ничего не работает, если я не добавлю их в c-mode-common-hook (а я не хочу этого делать) ... Это сводит меня с ума ... Я заглянул в vala-mode.el (внизу есть раздел обработки vala-mode-hook), и мне это кажется прекрасным ... Любая помощь по этому поводу очень ценится.   -  person Pawel Stolowski    schedule 12.10.2012


Ответы (3)


Примерно так должно работать:

(add-hook 'vala-mode-hook (lambda () (setq c-basic-offset 4)))
person legoscia    schedule 03.08.2012
comment
Я пробовал, не сработало. Также пробовал просто (setq c-basic-offset 4), тоже не сработало. - person David Gomes; 03.08.2012

Я никогда не использовал vala-mode, но похоже, что он основан на cc-mode, поэтому настройка c-basic-offset может работать. Для получения информации о том, как установить c-basic-offset в стиле, см. Документацию по адресу

(info "(ccmode)Customizing Indentation")
person Ivan Andrus    schedule 02.08.2012
comment
У меня работает (только что установил vala-mode от мармелада). Вы должны обязательно установить c-basic-offset в буфере, в котором вы хотите, чтобы он вступил в силу. Например. M-x set-variable RET c-basic-offset RET 4 RET, или в крючке, как предлагает @legoscia. Вы можете увидеть, какое значение c-basic-offset находится в буфере, набрав C-h v c-basic-offset RET. - person Ivan Andrus; 03.08.2012
comment
C-h v c-basic-offset говорит, что это 4. Я также пытался установить переменную внутри файла .vala. До сих пор не работает. - person David Gomes; 04.08.2012
comment
Какая у вас клавиша табуляции привязана к (C-h k <tab>)? Может, это не c-indent-line-or-region? Или вы пытаетесь сделать отступ по-другому? Возможно, вам поможет пример того, какой код vala имеет неправильный отступ. - person Ivan Andrus; 06.08.2012

Я видел, что проблема с отступом была исправлена, но не функция автозаполнения. Если вы используете пакет auto complete, то в своем init.el или .emacs вы можете просто указать:

(require 'auto-complete-config)
(add-to-list 'ac-modes 'vala-mode)

После этого у вас будет локальное автозаполнение. Это один из способов сделать это. Также существует пакет Yasnippet для vala, доступный в MELPA (https://github.com/gopar/vala-snippets)

person RandomGuy    schedule 05.04.2015