2009-04-23 16 views
10

Edytuję kod Pythona o dość długich funkcjach i zdecydowałem, że warto szybko uzyskać nazwę funkcji bez przewijania w górę. Połączyłem ten fragment kodu, aby to zrobić. Czy jest coś wbudowanego w emacs w ogóle, lub w standardowy tryb python w szczególności, którego mogę użyć zamiast?Funkcja Emacsa do wysyłania wiadomości do funkcji Pythona Jestem w

(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))))) 

Odpowiedz

21

można znaleźć przyzwoite wyniki z which-function-mode:

Który tryb funkcji jest tryb moll który wyświetla aktualny funkcja nazwę w linii trybu, aktualizując go jako poruszać się w buforze.

Aby włączyć lub wyłączyć tryb funkcji , należy użyć polecenia M-x , który-tryb funkcji. To polecenie jest globalne: ; ma zastosowanie do wszystkich buforów, zarówno istniejących, jak i jeszcze nie utworzonych. Jednak działa tylko w niektórych głównych trybach, tych wymienionych w wartości, które-func-tryby. Jeśli wartością jest , to który tryb funkcji dotyczy wszystkich głównych trybów, które wiedzą, jak go obsługiwać - innymi słowy, wszystkie główne tryby, które obsługują Imenu.

Chociaż widzę, że się trochę mylić w jednym pliku Pythona, że ​​mam tutaj ...

+0

Tak, i to nie działa tylko dla pytona –

+1

Dzięki, że jest idealny. Wygląda na to, że działa głównie w trybie Pythona, chociaż raportuje klasę, nad którą pracujesz, a nie funkcję, i musisz ją włączyć, ponieważ domyślnie nie jest ona w trybach "which-func". – justinhj

+0

Możesz również po prostu wywołać '(which-function)', jeśli chcesz uzyskać nazwę funkcji, ale nie używać trybu pomocniczego. – ohspite

0

C-c C-u (py-goto-block-up) może być tym, czego potrzebujesz.

+0

Niestety, wymaga to porusza się w buforze, który nie może być to, co chce, plakat ... –

+0

to gdzie zapisać wychyleniu wchodzi. –

2

Próbowałaś 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))))) 

znajdę to daje mi lepsze rezultaty niż twój beginning-of-defun, ale jeśli nie jest to problem masz, to może ja po prostu widząc kolejny objaw przyczyny wonkiness w my other answer.

+0

Mogę spróbować, ale jak dotąd działa dla każdej funkcji. – justinhj

Powiązane problemy