Только что начал использовать yasnippet для emacs и действительно нравится, как он работает, однако я столкнулся с незначительной неприятностью, я бы хотел помочь вам, если это возможно.Emacs Yasnippet для разных стилей кодирования
Один фрагмент Мне нравится, в частности, является «для» -snippet, т.е .:
# -*- mode: snippet -*-
# name: for
# key: for
# --
for (${1:i = 0}; ${2:i < N}; ${3:i++}) {
$0
}
Однако недавно я начал работать над проектом, где мы имеем другой стиль кодирования. Проще говоря фрагмент код выше, будет изменен, чтобы поместить стартовую позицию скобок:
# -*- mode: snippet -*-
# name: for
# key: for
# --
for (${1:i = 0}; ${2:i < N}; ${3:i++})
{
$0
}
Я бы, однако, хотел бы легко переключаться между различными проектами и, следовательно между различными стилями кодирования без необходимости вручную изменять фрагменты или создать много дубликатов , Поэтому я решил, что должно быть возможно написать некоторый код elisp во фрагменте, чтобы автоматически адаптироваться к текущему активному стилю кодирования.
Оглядываясь на некоторые документы Emacs/elisp, я нашел так называемый c-hanging-brace-alist (GNU doc), который, как я чувствую, должен каким-то образом использовать. Однако я никогда не делал никаких программ в elisp, и я не совсем уверен, как это сделать. Любая помощь или совет будут оценены!
Это довольно хорошее решение, некоторые возможные улучшения: Используйте elisp cond вместо того, чтобы поддерживать больше стилей. http://www.gnu.org/software/emacs/manual/html_node/elisp/Conditionals.html Я буду ждать немного дольше, прежде чем принимать ответ, однако, чтобы узнать, есть ли еще предложения. – Xaldew
@Xaldew Просто, чтобы вы знали, вы всегда можете [изменить принятый ответ] (https://stackoverflow.com/help/someone-answers) ... – itsjeyd