W emacs, powiedzmy, używam "elisp"
yasnippet, aby rozszerzyć blok lisp w trybie org. Ale zanim go przedłużę, najpierw uruchamiane jest towarzystwo, co daje mi menu jak "1. elisp1, 2. elisp2"
bez opcji "elisp"
. Teraz, jeśli tab
użyję rozszerzenia yasnippet, zawsze denerwuje mnie to, że "elisp1"
zawsze najpierw pojawia się na ekranie. "1"
Najpierw muszę usunąć i zrobić rozszerzenie fragmentu yasnippet.
Jako rozwiązanie zawsze używam lewego klawisza strzałki, aby najpierw wyłączyć menu ukończenia firmy, ale teraz kursor przejdzie do "elis|p"
, więc ponownie używam klawisza strzałki w prawo, aby przesunąć kursor na koniec "elisp|"
i rozszerzyć fragment kodu.
Oto moje pytanie: w jaki sposób mogę powiązać tab
klucz, aby najpierw uruchomić yasnippet, ale nie firmę, aby uratować mi życie?
źródło
tab
dlacompany
iC-o
dlayasnippet
. Mogę opisać dalej, jeśli jesteś zainteresowany.tab
. Więc nie chciałbym zmieniać wiązania.C-o
rozwinąć skróty, fragmenty i otwarte wiersze itp., Jeśli nie jesteś zainteresowany.Odpowiedzi:
To właśnie stworzyłem dla siebie, mając do czynienia z tym samym problemem. Pochodzi ze strony Wiki Emacsa w trybie firmowym , ale mocno rozbudowana:
Zasadniczo <tab>przez większość czasu robi to dobrze . Naciśnięcie przycisku spowoduje
Pamiętaj, że jeśli istnieje możliwość autouzupełniania i obecnie edytujesz w miejscu symbolu zastępczego fragmentu, sytuacja jest niejednoznaczna. Jako kompromis musiałem C-<tab>przejść bezpośrednio do następnego symbolu zastępczego.
Fakt, że nazwa fragmentu nie pojawia się w menu firmy, a istnienie fragmentu cicho modyfikuje zachowanie klawisza Tab, nie jest szczególnie miłe, niestety ... Chociaż <return>zamiast tego można zamiast tego wpisać fragmentu kodu.
źródło
Buffer is read-only: #<buffer *magit: ~/.emacs.d/*>
. Masz pomysł, jak to naprawić?magit-section-toggle
, jest w konflikcie z linią(global-set-key [tab] 'tab-indent-or-complete)
powyżej. Szybką i brudną poprawką byłoby dodanie sprawdzenia na początkutab-indent-or-complete
powyższej funkcji, aby sprawdzić, czy jesteśmy w trybie magit, np. Dla zmiennej globalnej, która jest włączanamagit-mode-hook
.when
jest prawieif
+progn
tab-indent-or-complete
cond '(( mag -tryb-p-magit-mode) (magit-sekcja-przełączanie (magit-prąd-sekcja)))Oto kod, którego używam:
aya-open-line
z auto-yasnippet robi więcej niż zwykłyopen-line
:open-line
jeśli wszystko inne zawiedzieźródło
C-o
po prostu zamyka menu firmowe, więc muszę dwukrotnie nacisnąć, aby przedłużyć yasnippet.C-o
przy aktywnym menu firmowym zamyka menu i rozwija fragment kodu.