Hiển thị phần đầu của phạm vi khi nó nằm ngoài màn hình


12

Tôi muốn hiển thị phần mở đầu của một phạm vi khi phần này ra khỏi màn hình.

Thí dụ:

namespace a  
{  
...  
--------------------- <- display frame 
...                 |  
}*                  | * when cursor is here display "namespace a" in the minibuffer
---------------------   or on screen

Điều này có thể làm việc cho nhiều ngôn ngữ lập trình nhưng tôi chủ yếu nghĩ về C ++.

Để làm rõ hơn một chút và đối với những người biết VS, tôi muốn một tính năng tương tự như những gì tồn tại cho Visual Studio. tức là định vị con trỏ ở cuối phạm vi hiển thị phần đầu của phạm vi ở đầu bộ đệm chỉnh sửa.

Là tính năng này đã tồn tại ở đâu đó?


Tôi tò mò, câu trả lời của tôi có giúp được không?
Từ Đô

@TuDo vâng! Tôi chỉ có thời gian để có một cái nhìn. Tôi đã có ngữ nghĩa và chỉ cần bật chế độ toàn cầu-semfunc-mode hoạt động tốt. Cảm ơn. Vấn đề của tôi bây giờ là màu sắc không làm cho dòng tiêu đề có thể đọc được ..
log0

Câu trả lời:


14

Nếu bạn đang viết C / C ++ / Java / Emacs Lisp / Python, thì semantic-stick-func-mode sẽ làm những gì bạn muốn.

LƯU Ý : Điều này dường như đang hoạt động với CEDET từ Git, không phải chứng khoán CEDET hiện tại trong Emacs 24.4. Để nhận Emacs từ Git:

git clone http://git.code.sf.net/p/cedet/git cedet

Và tải CEDET trước trên mọi thứ khác trong tệp init của bạn:

(load-file (concat user-emacs-directory "/cedet/cedet-devel-load.el"))
(add-to-list 'load-path (concat user-emacs-directory "cedet/contrib"))
(load-file (concat user-emacs-directory "cedet/contrib/cedet-contrib-load.el"))

Khi bật, chế độ này hiển thị điểm chức năng hiện đang ở dòng đầu tiên của bộ đệm hiện tại. Điều này hữu ích khi bạn có một chức năng rất dài trải rộng hơn một màn hình và bạn không phải cuộn lên để đọc tên chức năng và sau đó cuộn xuống vị trí ban đầu.

Nó hiển thị giao diện chức năng đầy đủ (kiểu trả về, tên hàm và tham số), không chỉ tên hàm.

Để kích hoạt nó, hãy đặt mã này vào tệp init của bạn:

(require 'semantic)
(semantic-mode 1)
(global-semantic-stickyfunc-mode 1)

CẬP NHẬT : Một trong những vấn đề với hiện tại semantic-stickyfunc-modelà nó không hiển thị tất cả các tham số nằm rải rác trên nhiều dòng. Để giải quyết vấn đề này, tôi đã tạo ra gói stickfunc-boost .

DEMO :

Đây là bản demo trong C:

semantic-dính-func-mode-c

Đây là bản demo trong Emacs Lisp:

semantic-dính-func-mode-elisp

CẬP NHẬT : Ngoài ra, bạn có thể sử dụng helm-semantic-hoặc-imothy . Khi bạn ở trong một hàm và chạy lệnh, con trỏ được đặt ngay tại hàm trong danh sách, do đó bạn luôn có thể thấy giao diện chức năng đầy đủ. BẢN GIỚI THIỆU:

  • Đầu tiên, tôi sử dụng helm-semantic-or-imenuđể di chuyển đến chức năng helm-define-key-with-subkeysvà di chuyển điểm đến đó.

  • Sau đó, tôi bắt đầu helm-semantic-or-imenulại và helm-define-key-with-subkeysđược chọn trước.

  • Sau đó, tôi di chuyển điểm đến helm-map biến đổi và thực hiện helm-semantic-or-imenulại trên hai hàm: helm-next-source và helm-trước-source. Lần này, thay vì hiển thị thẻ ngữ nghĩa hiện tại tôi đang hoạt động (đó là bản đồ helm), nó hiển thị hai thẻ khác trong bộ đệm ngữ nghĩa Helm. Điều này là do tôi đã cung cấp một đối số tiền tố trước khi chạy lệnh.

Ngoài ra bản demo này có trong Emacs Lisp, nó cũng hoạt động cho C / C ++ và nó linh hoạt hơn nếu bạn có giao diện chức năng thực sự dài.

helm-semantic-hoặc-imothy


Làm thế nào bạn có được điều này để làm việc cho Lisp (đặc biệt là Elisp)? Tôi đã đánh giá mã của bạn emacs -Qnhưng tôi không nhận được hành vi mà bạn mô tả khi duyệt, ví dụ : org.el.
itjeyd

Tôi cập nhật câu trả lời. Bạn nên thử nó với Semantic từ bzr.
Từ Đô

1
Hoàn toàn lạc đề. Cảm ơn bạn đã giới thiệu cho tôi chế độ Nyan. Mã hóa của tôi sẽ không bao giờ trở lại như cũ.
màu tím_

6

Bạn có thể bật which-function-modebằng cách làm

M-x which-function-mode RET

Để thiết lập vĩnh viễn, thêm

(which-function-mode 1)

vào tập tin init của bạn.

Từ tài liệu:

Chuyển đổi hiển thị dòng chế độ của chức năng hiện tại (Chế độ chức năng nào). [...]

Chế độ chức năng nào là chế độ nhỏ toàn cầu. Khi được bật, tên chức năng hiện tại được hiển thị liên tục trong dòng chế độ , ở một số chế độ chính.

Lưu ý : Tên không thực sự gợi ý nó, nhưng điều này không chỉ hoạt động cho "chức năng", mà còn cho các loại phạm vi khác. Ví dụ, trong org-mode, which-function-modehiển thị tiêu đề của cây con hiện tại.


Cảm ơn! Tôi thích tên chức năng ong được hiển thị trong dòng chế độ. Một số trường hợp đã không làm việc rất tốt mặc dù. Giống như phương thức trong một cấu trúc trong một không gian tên, tên không gian tên chỉ được hiển thị
log0
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.