Emacs 如何将带有行号的文件名转换为超链接?

Emacs 如何将带有行号的文件名转换为超链接?,emacs,elisp,Emacs,Elisp,我是emacs的新手,目前正在尝试为python设置工作环境。我正在使用rope,但遇到了以下问题:虽然rope的“Find occurrences”命令工作正常,但它的结果被放在一个无模式缓冲区中,为了访问它们,我必须复制文件名 缓冲区内容为 据我所知,编译模式提供了关闭我想要的功能(即,在单击某一行或按RET键后打开该行上的文件)。然而,事实上,启用编译模式只会导致突出显示文件名 若我不能正确理解,那个么为了处理行,我需要向编译错误regexp-alist中提供项,就像在下面的代码段(来自

我是emacs的新手,目前正在尝试为python设置工作环境。我正在使用rope,但遇到了以下问题:虽然rope的“Find occurrences”命令工作正常,但它的结果被放在一个无模式缓冲区中,为了访问它们,我必须复制文件名

缓冲区内容为

据我所知,编译模式提供了关闭我想要的功能(即,在单击某一行或按RET键后打开该行上的文件)。然而,事实上,启用编译模式只会导致突出显示文件名

若我不能正确理解,那个么为了处理行,我需要向编译错误regexp-alist中提供项,就像在下面的代码段(来自

我应该如何修改它以使其与我的缓冲区一起工作


有更好/更快的选择吗?

通常,当文件名显示在缓冲区中时,打开文件的最快方法是

M-x ffap
(缩写为
M-x在点处查找文件

如果要自动打开文件,可以定义自己的函数:

(defun open-file-at-point ()
  (interactive)
  (let ((file (ffap-file-at-point)))
    (if file
        (find-file file)
      (error "No file at point"))))
也许会把它绑在一把钥匙上

(global-set-key (kbd "C-<return>") 'open-file-at-point)

find file at point
可能会为您提供所需的功能。我不使用python,但您确定
rope
会将内容放入无模式缓冲区吗?转到该缓冲区,并使用
M-:major mode
——一旦获得该功能,您就可以在该模式下绑定
find file at point
的键。非常感谢t解决了我在这个特殊情况下遇到的所有问题。虽然
ffap
我们很有用(我以前不知道),但访问给定行上的文件(编译模式现在可以为我的缓冲区执行此操作)更是如此。没有更多的M-g了)
(global-set-key (kbd "C-<return>") 'open-file-at-point)
(add-to-list
 'compilation-error-regexp-alist
 'python-file-name)

(add-to-list
 'compilation-error-regexp-alist-alist
 (list
  'python-file-name
  (concat "\\(?1:.*?\\)"              ;; file name
          " : "                       ;; seperator
          "\\(?2:[[:digit:]]+\\)")    ;; line number
   1 2)) ;; subexpr 1 is the file name, subexp 2 is the line number