10

我正在编辑一些具有相当长函数的 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)))))
4

3 回答 3

21

您可能会使用which-function-mode找到不错的结果:

哪个函数模式是次要模式,它在模式行中显示当前函数名称,并在您在缓冲区中移动时更新它。

要启用或禁用哪个功能模式,请使用命令 Mx which-function-mode。这个命令是全局的;它适用于所有缓冲区,包括现有缓冲区和尚未创建的缓冲区。但是,它只在某些主要模式下生效,这些模式在 which-func-modes 的值中列出。如果值为 t,那么 Which Function 模式适用于所有知道如何支持它的主要模式——换句话说,所有支持 Imenu 的主要模式。

虽然我看到它在我在这里拥有的一个 Python 文件中有点困惑......

于 2009-04-23T16:01:39.197 回答
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,但如果这不是你遇到的问题,那么也许我只是在我的另一个答案中看到了另一个不稳定原因的症状。

于 2009-04-23T16:09:00.960 回答
0

Cc Cu (py-goto-block-up) 可能是你想要的。

于 2009-04-23T16:00:53.850 回答