Dans Verilog / C / C ++, les commentaires peuvent commencer par //
.
Voici un exemple de commentaire,
//This is a comment
J'aime utiliser la fonction find-file-at-point . Si mon curseur se trouve sur le nom du fichier dans `include "some_file.v"
.
Mais si mon curseur se trouve sur l'exemple de commentaire ci-dessus et si je frappe C-x C-f
, emacs essaie d'ouvrir un chemin provisoire //This
!
Comment empêcher sélectivement l' activation de find-file-at-point ? Dans ce cas, lorsque le mode principal est verilog-mode
, comment ne PAS faire find-file-at-point
lorsque mon curseur est sur une ligne où se trouvent les 2 premiers caractères non-espace //
?
C-x C-f
àffap
ou à une enveloppe autourffap
?C-x C-f
(parC-h k
RETC-x C-f
). Il devrait dire qu'il "exécute la commande"find-file
.find-file-at-point
fonctionnalité est désactivée par défaut. Je l'ai activé viaido
. J'ai(setq ido-use-filename-at-point 'guess)
dans ma config.Réponses:
C'est un peu décevant, car il y
ffap.el
a du code qui devrait faire exactement cela:Mais malheureusement, cela dépend de la présence d'un espace après le séparateur de commentaires.
C'est également très décevant, car les marqueurs de commentaires ne doivent jamais faire partie d'une chaîne au point. Voici donc une version corrigée
ffap-string-at-point
qui essaie d'ignorer systématiquement ces marqueursPar effet secondaire, il résout votre problème, mais c'est beaucoup plus général. Je me demande si un tel correctif devrait être intégré en amont.
la source
(require 'ffap)
. J'ai réalisé que ce correctif n'était pas efficace dans emacs init car il estffap
probablement chargé automatiquement .. ce qui ne se produit que lorsque je le fais interactivementfind-file
Merci à la solution proposée par @Sigma . J'avais cette solution dans ma config depuis plus de 2 ans, et j'ai finalement envoyé ça comme un patch à emacs en amont.
Valider dans emacs master: e472cfe8
Voici ce que fait le patch:
la source
Je pense que le piratage
find-file-at-point
est facile, vous pouvez utiliserdefadvice
surfind-file-at-point
.Le point clé est de détecter si le curseur se trouve dans un commentaire. J'ai eu un problème similaire lors du développement
evil-nerd-commenter
. Voici la fonction que vous pouvez réutiliser. L'astuce consiste à détecter la police actuelle.la source
Je sais que cela ne répond pas exactement à ce que le PO a demandé, mais un moyen simple pour que ffap fasse ce que vous voulez est de lui donner juste un petit conseil.
Edit: correction d'une citation lambda incorrecte (# '=> juste') Je comprends que les emacsen modernes préfèrent '# mais ceux qui ne le préfèrent pas, ne le comprennent pas.
Pour moi, cela a fonctionné. J'ai vraiment apprécié les idées de Kaushal Modi, Sigma, Chen bin et Giles.
J'utilise des chaînes étendues de //// pour briser la page, et je suis souvent dans l'en-tête lorsque j'essaie de trouver le répertoire actuel ou un fichier. Je sais que ce conseil ne servira pas à tous; Je l'ai mis ici parce qu'une recherche sur ffap m'a amené ici. D'autres pourraient avoir des conseils personnels différents pour assurer la fonction. Sur la base de ce que j'ai lu ici, j'ai écrit le code ci-dessus.
J'utilise Emacs depuis 1984 et certaines des nouvelles fonctionnalités n'apparaissent sur mon radar que lorsque je vois du code. Je recommande la section Info sur les conseils. Ou dans emacs
(Info-goto-node "(elisp)Advising Functions")
.la source