Dalam emacs saya, katakanlah, saya menggunakan "elisp"
yasnippet untuk memperpanjang blok lisp dalam mode-org. Tetapi sebelum saya memperpanjangnya, perusahaan dipicu terlebih dahulu, yang memberi saya menu seperti "1. elisp1, 2. elisp2"
tanpa opsi "elisp"
. Sekarang jika saya gunakan tab
untuk memperpanjang yasnippet, selalu menjengkelkan yang "elisp1"
selalu pertama kali muncul di layar. Jadi saya perlu menghapus "1"
dulu, dan melakukan ekstensi snippet yasnippet.
Jadi sebagai solusi, saya selalu menggunakan tombol panah kiri untuk mematikan menu penyelesaian perusahaan terlebih dahulu, tetapi kursor sekarang akan pergi ke "elis|p"
, jadi sekali lagi saya menggunakan tombol panah kanan untuk menggerakkan kursor ke ujung "elisp|"
, dan memperpanjang snippet.
Inilah pertanyaan saya: bagaimana saya dapat mengikat tab
kunci pertama kali memicu yasnippet tetapi tidak perusahaan untuk menyelamatkan saya?
sumber
tab
untukcompany
danC-o
untukyasnippet
. Saya dapat menjelaskan lebih lanjut jika Anda tertarik.tab
. Jadi saya tidak ingin mengubah ikatannya.C-o
bisa memperluas singkatan dan snippet dan membuka garis dll jika Anda tidak tertarik.Jawaban:
Inilah yang saya buat untuk diri saya sendiri, menghadapi masalah yang sama. Ini dari halaman Emacs Wiki mode perusahaan , tetapi sangat diperluas:
Pada dasarnya, ini membuat <tab>melakukan hal yang benar sebagian besar waktu. Menekan tab akan
Perhatikan bahwa jika ada peluang untuk pelengkapan otomatis dan saat ini Anda mengedit di tempat penampung cuplikan, situasinya ambigu. Sebagai kompromi, saya terikat C-<tab>untuk langsung beralih ke placeholder berikutnya.
Fakta bahwa nama snippet tidak muncul di menu perusahaan dan keberadaan snippet secara diam-diam mengubah perilaku kunci tab tidak terlalu bagus, sayangnya ... Meskipun setidaknya mungkin untuk mengetik <return>alih-alih mendapatkan penyelesaian sebagai gantinya dari cuplikan.
sumber
Buffer is read-only: #<buffer *magit: ~/.emacs.d/*>
. Adakah yang bisa saya perbaiki?magit-section-toggle
, bertentangan dengan baris di(global-set-key [tab] 'tab-indent-or-complete)
atas. Perbaikan cepat dan kotor adalah dengan menambahkan tanda centang di awal fungsi ditab-indent-or-complete
atas untuk melihat apakah kita dalam mode magit, misalnya untuk variabel global yang diaktifkanmagit-mode-hook
.when
cukup banyakif
+progn
tab-indent-or-complete
cond `((diturunkan-mode-p 'magit-mode) (magit-section-toggle (magit-current-section)))`Berikut kode yang saya gunakan:
aya-open-line
dari auto-yasnippet melakukan lebih dari sekadaropen-line
:open-line
jika semuanya gagalsumber
C-o
, itu hanya menutup menu perusahaan, jadi saya perlu menekan dua kali untuk memperpanjang yasnippet.C-o
dengan menu perusahaan yang aktif akan menutup menu dan memperluas cuplikan.