2009-04-23 31 views
10

Tôi đang chỉnh sửa một số mã Python có chức năng khá dài và quyết định sẽ hữu ích khi nhanh chóng lấy tên hàm mà không cần cuộn lên. Tôi đặt đoạn mã này lại với nhau để làm điều đó. Có cái gì đó được xây dựng trong emacs nói chung, hoặc chế độ python tiêu chuẩn cụ thể, mà tôi có thể sử dụng để thay thế?Hàm Emacs để thông báo hàm python Tôi đang ở

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

Trả lời

21

Bạn có thể tìm thấy kết quả khá với which-function-mode:

chế độ nào Function là một chế độ nhỏ hiển thị dòng tên hàm trong dòng chế độ, cập nhật nó như bạn di chuyển xung quanh trong một bộ đệm.

Để bật hoặc tắt Chế độ chức năng , hãy sử dụng lệnh M-x chế độ chức năng. Lệnh này là toàn cầu; nó áp dụng cho tất cả các bộ đệm, cả hai bộ đệm hiện tại và những bộ lọc chưa được tạo . Tuy nhiên, nó chỉ có hiệu lực ở một số chế độ chính, những chế độ được liệt kê trong giá trị của chế độ đó-func. Nếu giá trị là t, thì Chế độ sẽ áp dụng cho tất cả các chế độ chính biết cách hỗ trợ nó - nói cách khác, tất cả các chế độ chính hỗ trợ Imenu.

Mặc dù tôi nhìn thấy nó nhận được một chút nhầm lẫn trong một tập tin Python mà tôi có ở đây ...

+0

Có, và điều này không chỉ cho python –

+1

Cảm ơn, đó là lý tưởng. Dường như nó chủ yếu hoạt động trong chế độ python mặc dù nó báo cáo lớp bạn đang làm việc thay vì hàm, và bạn phải kích hoạt nó, vì nó không có trong 'chế độ func-mode' theo mặc định. – justinhj

+0

Bạn cũng có thể chỉ cần gọi '(có chức năng)' nếu bạn muốn lấy tên hàm nhưng không sử dụng chế độ phụ. – ohspite

0

C-c C-u (py-goto-block-up) có thể là những gì bạn muốn.

+0

Thật không may, điều này đòi hỏi phải di chuyển trong bộ đệm, có thể không phải là áp phích muốn ... –

+0

Đó là nơi lưu chuyến tham quan. –

2

Bạn hãy thử 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))))) 

tôi thấy nó mang lại cho tôi kết quả tốt hơn so với beginning-of-defun của bạn, nhưng nếu đó không phải là vấn đề bạn đang gặp phải, thì có lẽ tôi chỉ nhìn thấy một triệu chứng về nguyên nhân của wonkiness trong my other answer.

+0

Tôi có thể thử nhưng cho đến nay nó hoạt động cho mọi chức năng. – justinhj

Các vấn đề liên quan