En Verilog / C / C ++, los comentarios pueden comenzar con //
.
Aquí hay un comentario de ejemplo,
//This is a comment
Me gusta usar la función find-file-at-point . Si mi cursor está en el nombre del archivo en `include "some_file.v"
.
Pero si mi cursor está en el comentario de ejemplo anterior y si C-x C-f
presiono, ¡emacs intenta abrir un camino tentativo //This
!
¿Cómo evito selectivamente que se active find-file-at-point ? En este caso, cuando el modo principal es verilog-mode
, ¿cómo NO lo hago find-file-at-point
cuando mi cursor está en una línea donde están los primeros 2 caracteres que no son espacios //
?
C-x C-f
affap
o para una envoltura alrededorffap
?C-x C-f
(porC-h k
RETC-x C-f
). Debería decir que "ejecuta el comando"find-file
.find-file-at-point
función está deshabilitada de manera predeterminada. Lo tengo habilitado a través deido
. Tengo(setq ido-use-filename-at-point 'guess)
en mi config.Respuestas:
Esto es un poco decepcionante, porque
ffap.el
tiene un código que debería hacer exactamente eso:Pero desafortunadamente, depende de que haya un espacio después del separador de comentarios.
También es muy decepcionante, porque los marcadores de comentarios nunca deberían ser parte de una cadena en el punto. Así que aquí hay una versión parcheada
ffap-string-at-point
que trata de ignorar sistemáticamente esos marcadoresPor efecto secundario, soluciona su problema, pero es mucho más general. Me pregunto si tal solución debería integrarse en sentido ascendente.
fuente
(require 'ffap)
. Me di cuenta de que este parche no estaba siendo efectivo en emacs init, ya queffap
probablemente se carga automáticamente ... lo que no sucede hasta que interactivamente lo hagofind-file
Gracias a la solución publicada por @Sigma . Tuve esa solución en mi configuración durante más de 2 años, y finalmente la envié como parche a emacs upstream.
Comprometerse en emacs master: e472cfe8
Esto es lo que hace efectivamente el parche:
fuente
Creo que la piratería
find-file-at-point
es fácil, se puede utilizardefadvice
enfind-file-at-point
.El punto clave es detectar si el cursor está en un comentario. Tuve un problema similar al desarrollar
evil-nerd-commenter
. Aquí está la función que puede reutilizar. El truco es detectar la fuente actual.fuente
Sé que esto no se trata exactamente de lo que pidió el OP, pero una forma simple de hacer que ffap haga lo que quieres es darle un pequeño consejo.
Editar: se corrigió una cita lambda incorrecta (# '=> solo') Entiendo que los emacsen modernos prefieren '# pero los que no lo prefieren, no lo entiendo.
Para mí, esto funcionó. Realmente aprecié las ideas de Kaushal Modi, Sigma, Chen bin y Giles.
Uso cadenas extendidas de //// para dividir la página, y a menudo estoy en el encabezado cuando intento encontrar el directorio actual o un archivo en él. Sé que este consejo no servirá para todos; Lo puse aquí porque una búsqueda en ffap me trajo aquí. Otros pueden tener diferentes consejos personales para proporcionar la función. Según lo que leí aquí, escribí el código anterior.
He estado usando Emacs desde 1984, y algunas de las nuevas características no aparecen en mi radar hasta que veo algún código. Recomiendo la sección de información sobre consejos. O en emacs
(Info-goto-node "(elisp)Advising Functions")
.fuente