In Verilog / C / C ++ können Kommentare mit beginnen //
.
Hier ist ein Beispielkommentar:
//This is a comment
Ich verwende gerne die Funktion " Datei am Punkt suchen" . Wenn sich mein Cursor auf dem Dateinamen in befindet `include "some_file.v"
.
Wenn sich mein Cursor jedoch auf dem obigen Beispielkommentar befindet und ich C-x C-f
drücke, versucht emacs, einen vorläufigen Pfad zu öffnen //This
!
Wie verhindere ich selektiv, dass Find-File-at-Point aktiviert wird? verilog-mode
Wie kann ich in diesem Fall im Hauptmodus NICHT vorgehen, find-file-at-point
wenn sich mein Cursor in einer Zeile befindet, in der sich die ersten beiden Nicht-Leerzeichen befinden //
?
C-x C-f
zuffap
oder auf einen Wrapper umffap
?C-x C-f
(perC-h k
RETC-x C-f
). Es sollte sagen, dass es "den Befehl ausführt"find-file
.find-file-at-point
Funktion ist standardmäßig deaktiviert. Ich habe es über aktiviertido
. Ich habe(setq ido-use-filename-at-point 'guess)
in meiner Konfiguration.Antworten:
Dies ist etwas enttäuschend, da
ffap.el
es einen Code gibt, der genau das tun sollte :Leider hängt es davon ab, dass nach dem Kommentartrennzeichen ein Leerzeichen steht.
Es ist auch sehr enttäuschend, da Kommentarmarkierungen niemals Teil eines String-at-Point sein sollten. Hier ist eine gepatchte Version davon
ffap-string-at-point
, die versucht, diese Markierungen systematisch zu ignorierenAls Nebeneffekt behebt es Ihr Problem, aber es ist viel allgemeiner. Ich frage mich, ob ein solches Update vorgelagert werden sollte.
quelle
(require 'ffap)
. Ich habe festgestellt, dass dieser Patch in Emacs Init nicht effektiv ist, da erffap
wahrscheinlich automatisch geladen wird. Dies geschieht erst, wenn ich es interaktiv machefind-file
Dank der Lösung von @Sigma . Ich hatte diese Lösung mehr als 2 Jahre in meiner Konfiguration und schickte sie schließlich als Patch an Emacs Upstream.
Commit in Emacs Master: e472cfe8
Folgendes bewirkt der Patch effektiv:
quelle
Ich denke, Hacking
find-file-at-point
ist einfach, Sie könnendefadvice
auf verwendenfind-file-at-point
.Der entscheidende Punkt ist das Erkennen, ob sich der Cursor in einem Kommentar befindet. Ich hatte ein ähnliches Problem bei der Entwicklung
evil-nerd-commenter
. Hier ist die Funktion, die Sie wiederverwenden können. Der Trick besteht darin, die aktuelle Schriftart zu erkennen.quelle
Ich weiß, dass dies nicht genau das betrifft, was das OP verlangt hat, aber eine einfache Möglichkeit, ffap dazu zu bringen, das zu tun, was Sie wollen, besteht darin, ihm nur einen kleinen Rat zu geben.
Bearbeiten: falsches Lambda-Zitat behoben (# '=> nur') Ich verstehe, dass moderne Emacsen '# bevorzugen, aber diejenigen, die es nicht bevorzugen, verstehen es nicht.
Für mich hat das funktioniert. Ich habe die Erkenntnisse von Kaushal Modi, Sigma, Chen bin und Giles sehr geschätzt.
Ich verwende erweiterte Zeichenfolgen von ////, um die Seite aufzuteilen, und ich bin oft im Header, wenn ich versuche, entweder das aktuelle Verzeichnis oder eine Datei darin zu finden. Ich weiß, dass dieser Rat nicht allen dienen wird; Ich habe es hierher gebracht, weil mich eine Suche auf ffap hierher gebracht hat. Andere haben möglicherweise andere persönliche Ratschläge, um die Funktion bereitzustellen. Basierend auf dem, was ich hier gelesen habe, habe ich den obigen Code geschrieben.
Ich benutze Emacs seit 1984 und einige der neuen Funktionen werden erst auf meinem Radar angezeigt, wenn ich Code sehe. Ich empfehle den Info- Bereich zur Beratung. Oder in Emacs
(Info-goto-node "(elisp)Advising Functions")
.quelle