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