我使用emacs在Verilog / SystemVerilog中编码,注释行以//
开头。
我喜欢使用“ido find files at point”,所以'(ido-use-filename-at-point (quote guess))
中有custom-set-variables
。
除非我在光标位于//Revision Control:
等评论的第一个单词时尝试打开另一个文件,否则它的效果非常好。它试图在//
路径中找到名为Revision的文件。
如何禁用根/
和//
路径的ido ffap功能?另一种提供功能的方法是,如果ido ffap在以//
开头的行上自动禁用。
答案 0 :(得分:0)
假设在verilog-mode
中ffap-alist
没有特殊的ffap处理程序,以下代码应该可以解决这个问题:
(defun ffap-verilog (name)
(let ((inhibit-changing-match-data t) ;; string-match should not change match data
(ppss (syntax-ppss)))
(if (and (eq (syntax-ppss-context ppss) 'comment) ;; we are inside a comment
(= (line-number-at-pos (nth 8 ppss)) (line-number-at-pos (point))) ;; limit the match to the line starting the comment
(string-match "/[/*]\\([[:alnum:]_.]\\)+$"
(buffer-substring-no-properties (nth 8 ppss) (point))))
""
name)))
(add-to-list 'ffap-alist '(verilog-mode . ffap-verilog) 'append)
检查特殊情况,注释的前导//
或/*
后面紧跟一个字符串,该字符串可能被ffap
错误解释为网址或路径通配符。但请注意,不会处理以\\
开头的注释中的其他字符串,因为这些字符串可能真的是网址。