В моем emacs, скажем, я использую "elisp"
yasnippet для расширения блока lisp в режиме org. Но прежде чем продлить его, сначала запускается компания, которая дает мне меню, как "1. elisp1, 2. elisp2"
без опции "elisp"
. Теперь, если я использую tab
для расширения yasnippet, это всегда раздражает, что "elisp1"
всегда сначала идет на экране. Поэтому мне нужно "1"
сначала удалить и сделать фрагмент кода yasnippet.
Поэтому в качестве решения я всегда использую левую клавишу со стрелкой, чтобы сначала отключить меню завершения компании, но теперь курсор переместится на "elis|p"
, поэтому я снова использую правую клавишу со стрелкой, чтобы переместить курсор в конец "elisp|"
и расширить фрагмент.
Здесь возникает мой вопрос: как я могу связать tab
ключ в первую очередь, вызвать Ясниппет, но не компанию, чтобы спасти мне жизнь?
источник
tab
дляcompany
иC-o
дляyasnippet
. Я могу описать дальше, если вам интересно.tab
. Поэтому я не хотел бы менять привязку.C-o
можно расширять аббревиатуры, фрагменты, открытые строки и т. Д., Если вам это не интересно.Ответы:
Это то, что я создал для себя, столкнувшись с той же проблемой. Это со страницы Emacs Wiki корпоративного режима , но сильно расширенное:
В основном это заставляет <tab>делать правильные вещи большую часть времени. Нажатие вкладки будет
Обратите внимание, что если есть возможность автозаполнения, и вы в настоящее время редактируете местозаполнитель фрагмента, ситуация неоднозначна. В качестве компромисса я C-<tab>должен перейти непосредственно к следующему заполнителю.
Тот факт, что имя фрагмента не появляется в меню компании, а наличие фрагмента молча изменяет поведение клавиши табуляции, не очень приятно, к сожалению ... Хотя, по крайней мере, можно <return>вместо этого набрать, чтобы получить завершение вместо фрагмента.
источник
Buffer is read-only: #<buffer *magit: ~/.emacs.d/*>
. Есть идеи, как я могу это исправить?magit-section-toggle
, противоречит приведенной(global-set-key [tab] 'tab-indent-or-complete)
выше строке . Быстрое и грязное исправление состоит в том, чтобы добавить проверку в начале функцииtab-indent-or-complete
выше, чтобы увидеть, находимся ли мы в режиме magit, например, для глобальной переменной, которая включенаmagit-mode-hook
.when
в значительной степениif
+progn
tab-indent-or-complete
cond `((производный-режим-p 'magit-mode) (magit-section-toggle (magit-current-section)))`Вот код, который я использую:
aya-open-line
от авто-yasnippet делает более простойopen-line
:open-line
если все остальное терпит неудачуисточник
C-o
, он просто закрывает меню компании, поэтому мне нужно дважды нажать, чтобы расширить yasnippet.C-o
при активном меню компании закроет меню и развернет фрагмент.