Mã hành động gấp trong rìa Emacs


15

Tôi muốn cấu hình rìa Emacs của tôi để hiển thị các phần gấp mã.

Ví dụ: BBEdit trên Mac sẽ hiển thị như sau khi chỉnh sửa tệp JSON:

Dấu gấp mã BBEdit

Các nhãn hiệu có thể thực hiện được: nhấp vào nhãn hiệu sẽ mở rộng hoặc thu gọn phần mã tương ứng. Khi tài liệu không có chế độ hỗ trợ gấp mã, phần rìa không được hiển thị.

Có thể mở rộng chức năng rìa Emacs theo cách như vậy không?

Câu trả lời:


16

HIDIAvis thêm các biểu tượng có thể nhấp vào rìa, nhưng vì một số lý do kỳ lạ, nó không được bao gồm trong elpa hoặc melpa. Theo mặc định, nó hiển thị một -rìa cho mã có thể được gấp lại, và sau đó tách nội dung với a .... Bằng cách cũng cho phép hideshowvis-symbolsnó thêm một +và làm cho gợi ý cho nội dung gấp lại to hơn một chút.

Bản thân trình diễn cũng cho phép nhấp chuột trên dòng để chuyển đổi hiển thị bằng cách sử dụng S-mouse-2(hoặc thay đổi nhấp chuột giữa). Điều đó được tích hợp và có thể được kích hoạt với hs-minor-mode.


1
Thật tuyệt, hIDIAvis.el sử dụng một bản hack tương tự như bản tôi đang đề xuất, nhưng không có sự xấu xí khi phải nhấp đúp chuột (bằng cách đọc sự kiện thô). Cảm ơn con trỏ.
Sigma

3
Hideshowvis.ellàm việc tuyệt vời, cảm ơn! Tôi gặp một số vấn đề khiến nó hoạt động trên các tệp JSON js3-mode; để khắc phục những vấn đề này, tôi phải đảm bảo rằng chỉ trình diễn chỉ được bật sau khi tất cả các hành động trong hàng đợi, ví dụ:(dolist (hook '(emacs-lisp-mode-hook c++-mode-hook)) (add-hook hook 'hideshowvis-enable)) (defun hideshowvis-enable-immediately () (run-at-time "0 seconds" nil 'hideshowvis-enable)) (add-hook 'js3-mode-hook 'hideshowvis-enable-immediately)
Mathieu Legrand

Bây giờ là trên melpa.
dshepherd

4

Mặc dù tôi không nghĩ rằng các mục bên lề có thể trực tiếp nhận được các nhấp chuột (mặc dù tôi có thể sai), một hack có thể sẽ là liên kết (kbd "<left-fringe> <double-mouse-1>")

Vì lần nhấp đầu tiên sẽ di chuyển điểm đến đầu dòng tương ứng với biểu tượng rìa, nên việc kiểm tra giá trị của (point)hàm gấp (giả định) giả định của bạn sẽ cho phép bạn xác định phần nào của mã (không) gấp hoặc bạn cần phải làm bất cứ điều gì cả (trong trường hợp không có biểu tượng rìa nào cho dòng này)

ví dụ với bộ đệm chế độ org:

(define-key org-mode-map (kbd "<left-fringe> <double-mouse-1>") 'org-cycle)

Nhấp đúp vào rìa chu kỳ cây con tương ứng.

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.