Emacs函数用于显示我正在使用的Python函数

10 投票
3 回答
997 浏览
提问于 2025-04-15 11:13

我在编辑一些Python代码,这些代码里的函数比较长,所以我觉得如果能快速查看函数名而不用往上滚动就太好了。于是我写了这段代码来实现这个功能。请问在emacs里,或者在标准的Python模式下,有没有什么内置的功能可以用来代替这个呢?

(defun python-show-function-name()
  "Message the name of the function the point is in"
  (interactive)
  (save-excursion
    (beginning-of-defun)
    (message (format "%s" (thing-at-point 'line)))))

3 个回答

0

C-c C-u (py-goto-block-up) 可能正是你需要的功能。

2

你试过 py-beginning-of-def-or-class 吗?

(defun python-show-function-name()
  "Message the name of the function the point is in"
  (interactive)
  (save-excursion
    (py-beginning-of-def-or-class)
    (message (format "%s" (thing-at-point 'line)))))

我觉得这个比你的 beginning-of-defun 效果要好,不过如果这不是你遇到的问题,那可能我只是看到了 我之前回答 中提到的另一个症状。

21

你可以试试 which-function-mode,效果还不错:

Which Function模式是一个小功能,它会在状态栏上显示你当前正在使用的函数名称,并且当你在编辑器中移动时,它会实时更新这个名称。

如果你想开启或关闭Which Function模式,可以使用命令 M-x which-function-mode。这个命令是全局的,也就是说它会对所有的编辑窗口生效,不管是已经打开的还是将来会打开的。不过,它只在某些主要模式下有效,这些模式在which-func-modes的设置中列出了。如果这个设置的值是t,那么Which Function模式就会适用于所有支持它的主要模式,也就是说,所有支持Imenu的主要模式。

不过我发现它在我这里的一个Python文件中有点混乱……

撰写回答