Di Verilog / C / C ++, komentar dapat dimulai dengan //
.
Berikut ini contoh komentar,
//This is a comment
Saya suka menggunakan fitur find-file-at-point . Jika kursor saya ada pada nama file di `include "some_file.v"
.
Tetapi jika kursor saya ada pada contoh komentar di atas dan jika saya menekan C-x C-f
, emacs mencoba untuk membuka jalan tentatif //This
!
Bagaimana cara saya selektif mencegah find-file-at-point aktif? Dalam hal ini, ketika mode utama adalah verilog-mode
, bagaimana saya TIDAK lakukan find-file-at-point
ketika kursor saya berada pada garis di mana 2 karakter non-spasi pertama berada //
?
C-x C-f
keffap
atau ke pembungkusffap
?C-x C-f
(olehC-h k
RETC-x C-f
). Seharusnya mengatakannya "menjalankan perintah"find-file
.find-file-at-point
Fitur ini dinonaktifkan secara default. Saya telah mengaktifkannya viaido
. Saya miliki(setq ido-use-filename-at-point 'guess)
di konfigurasi saya.Jawaban:
Ini agak mengecewakan, karena
ffap.el
memiliki beberapa kode yang harus melakukan hal itu:Namun sayangnya, itu bergantung pada adanya ruang setelah pemisah komentar.
Ini juga sangat mengecewakan, karena penanda komentar tidak boleh menjadi bagian dari string-at-point. Jadi, inilah versi tambalan
ffap-string-at-point
yang mencoba mengabaikan penanda itu secara sistematisEfek samping itu memperbaiki masalah Anda, tetapi jauh lebih umum. Saya ingin tahu apakah perbaikan seperti itu harus diintegrasikan ke hulu.
sumber
(require 'ffap)
. Saya menyadari bahwa tambalan ini tidak efektif dalam emacs init karenaffap
mungkin akan dimuat secara otomatis .. yang tidak terjadi sebelum saya berinteraksi secara interaktiffind-file
Berkat solusi yang diposting oleh @Sigma . Saya memiliki solusi itu di konfigurasi saya selama lebih dari 2 tahun, dan akhirnya mengirimkannya sebagai patch untuk emacs di hulu.
Komit dalam master emacs: e472cfe8
Inilah yang dilakukan patch secara efektif:
sumber
Saya pikir hack
find-file-at-point
mudah, Anda dapat menggunakandefadvice
difind-file-at-point
.Poin kuncinya adalah mendeteksi apakah kursor dalam komentar. Saya memiliki masalah serupa ketika berkembang
evil-nerd-commenter
. Berikut adalah fungsi yang dapat Anda gunakan kembali. Caranya adalah mendeteksi wajah font saat ini.sumber
Saya tahu bahwa ini bukan persis apa yang diminta OP, tetapi cara sederhana untuk mendapatkan apa yang Anda inginkan adalah dengan memberikan sedikit saran.
Sunting: memperbaiki kutipan lambda yang salah (# '=> just') Saya mengerti bahwa emacsen modern lebih memilih '# tetapi yang tidak menyukainya, tidak memahaminya.
Bagi saya, ini berhasil. Saya sangat menghargai wawasan Kaushal Modi, Sigma, Chen bin, dan Giles.
Saya menggunakan string //// yang diperluas untuk memecah halaman, dan saya sering berada di header ketika mencoba menemukan direktori saat ini atau file di dalamnya. Saya tahu bahwa nasihat ini tidak akan berlaku untuk semua; Saya taruh di sini karena pencarian di ffap membawa saya ke sini. Orang lain mungkin memiliki saran pribadi yang berbeda untuk menyediakan fungsi. Berdasarkan apa yang saya baca di sini, saya menulis kode di atas.
Saya telah menggunakan Emacs sejak 1984, dan beberapa fitur baru tidak masuk ke radar saya sampai saya melihat beberapa kode. Saya merekomendasikan bagian Info tentang saran. Atau di emacs
(Info-goto-node "(elisp)Advising Functions")
.sumber