Функция Emacs для сообщения функции python, в которой я находится
Я редактирую код 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)))))
Ответы
Ответ 1
Вы можете найти достойные результаты с который-функция-режим:
Какой режим функции является второстепенным который отображает текущую функцию имя в строке режима, обновив его как вы перемещаетесь в буфере.
Чтобы включить или отключить Функциональный режим, используйте команду M-x который-функция-режим. Эта команда Глобальный; он применяется ко всем буферам, как существующие, так и те, создано. Однако он вступает в силу только в некоторых основных режимах, перечисленных в значении которых-func-моды. Если значение t, то какая функция режим применяется ко всем основным режимам, которые знают, как его поддерживать, другими словами, все основные режимы, поддерживающие Imenu.
Хотя я вижу, что это немного запутано в одном файле Python, который у меня есть здесь...
Ответ 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
, но если это не проблема, которую вы испытываете, то, возможно, я просто вижу еще один симптом причины неудобства в мой другой ответ.
Ответ 3
C-c C-u (py-goto-block-up) может быть тем, что вы хотите.