Saya ingin menampilkan bagian pembuka lingkup ketika ini keluar dari layar.
Contoh:
namespace a
{
...
--------------------- <- display frame
... |
}* | * when cursor is here display "namespace a" in the minibuffer
--------------------- or on screen
Ini bisa bekerja untuk banyak bahasa pemrograman tetapi saya terutama memikirkan C ++.
Untuk menjelaskan lebih banyak dan bagi mereka yang tahu VS, saya ingin fitur yang sama seperti apa yang ada untuk Visual Studio. yaitu memposisikan kursor di akhir lingkup menampilkan awal lingkup di bagian atas buffer edit.
Apakah fitur ini sudah ada di suatu tempat?
minibuffer
c++
programming
log0
sumber
sumber
Jawaban:
Jika Anda menulis C / C ++ / Java / Emacs Lisp / Python, maka semantic-sticky-func-mode akan melakukan apa yang Anda inginkan.
CATATAN : Ini tampaknya bekerja dengan CEDET dari Git, bukan stok CEDET saat ini di Emacs 24.4. Untuk mendapatkan Emacs dari Git:
Dan muat CEDET terlebih dahulu di atas segalanya di file init Anda:
Saat diaktifkan, mode ini menunjukkan titik fungsi saat ini berada di baris pertama dari buffer saat ini. Ini berguna ketika Anda memiliki fungsi yang sangat panjang yang menyebar lebih dari satu layar, dan Anda tidak perlu menggulir ke atas untuk membaca nama fungsi dan kemudian gulir ke bawah ke posisi semula.
Ini menampilkan antarmuka fungsi penuh (tipe pengembalian, nama fungsi dan parameter), bukan hanya nama fungsi.
Untuk mengaktifkannya, masukkan kode ini ke file init Anda:
UPDATE : Salah satu masalah dengan saat ini
semantic-stickyfunc-mode
adalah tidak menampilkan semua parameter yang tersebar di beberapa baris. Untuk mengatasi masalah ini, saya membuat paket stickyfunc-enh .DEMO :
Berikut ini adalah demo di C:
Berikut ini adalah demo di Emacs Lisp:
UPDATE : Atau, Anda dapat menggunakan helm-semantic-atau-imenu . Ketika Anda berada di dalam suatu fungsi dan menjalankan perintah, kursor ditempatkan tepat di fungsi dalam daftar, sehingga Anda selalu dapat melihat antarmuka fungsi penuh. DEMO:
Pertama, saya gunakan
helm-semantic-or-imenu
untuk pindah ke fungsihelm-define-key-with-subkeys
dan memindahkan titik di sana.Kemudian, saya mulai
helm-semantic-or-imenu
lagi danhelm-define-key-with-subkeys
sudah dipilih sebelumnya.Kemudian, saya memindahkan titik ke variabel helm-map dan mengeksekusi
helm-semantic-or-imenu
lagi pada dua fungsi: helm-next-source dan helm-source-sebelumnya. Kali ini, alih-alih menunjukkan tag semantik saat ini yang sedang saya operasikan (yang merupakan helm-peta), ini menunjukkan dua tag lainnya di buffer Semantic Helm. Ini karena saya memberikan argumen awalan sebelum menjalankan perintah.Juga demo ini ada di Emacs Lisp, ini bekerja untuk C / C ++ juga dan itu lebih fleksibel jika Anda memiliki antarmuka fungsi yang sangat panjang.
sumber
emacs -Q
tetapi saya tidak mendapatkan perilaku yang Anda jelaskan ketika saya telusuri, misalnyaorg.el
,.Anda dapat menghidupkan
which-function-mode
dengan melakukanM-x
which-function-mode
RETUntuk menjadikan pengaturan ini permanen, tambahkan
ke file init Anda.
Dari dokumentasi:
Catatan : Nama itu tidak benar-benar menyarankannya, tetapi ini tidak hanya berfungsi untuk "fungsi", tetapi juga untuk jenis cakupan lain. Misalnya, dalam
org-mode
,which-function-mode
menampilkan judul subtree saat ini.sumber