2009-07-30 33 views
12

thể trùng lặp:
How to achieve code folding effects in emacsMã gấp trong Emacs

Một tính năng tuyệt vời của Dreamweaver là code folding of any lines of text - đệ quy!

Thật tuyệt vời, tôi có thể gấp bất kỳ văn bản hoặc mã nào, bất kể ngôn ngữ. Tôi làm việc với các hệ thống hiện có; Tôi không chỉnh sửa mã hoặc mã được viết tốt bằng một ngôn ngữ, chủ yếu là HTML trộn lẫn với thần-biết-cái gì. Đường gấp làm cho sự hiểu biết rất nhiều dễ dàng hơn và nhanh hơn. Đáng buồn thay, đây là chỉ tính năng tôi thích trong Dreamweaver.

Có mã gấp nào cho Emacs trong một mục đích tương tự không?

+1

Trước đây: http: // stackoverflow.com/questions/1085170/how-to-achieve-code-folding-effects-in-emacs – dmckee

Trả lời

9

folding mode, chế độ phụ. Thật không may nó xâm nhập: bạn phải tự chú thích các nếp gấp với các nhận xét chuyên biệt, làm lộn xộn mã khi bạn không sử dụng chế độ (hoặc khi chia sẻ mã với những người khác không sử dụng nó). Một chế độ tốt hơn sẽ không thay đổi mã của bạn để hoạt động.

Hãy để tôi thêm: bản sao có giá trị này đáng xem: How to achieve code folding effects in Emacs.

+1

Cảm ơn, tôi đã xem xét câu hỏi đó và nó không trả lời câu hỏi của tôi bởi vì tôi không muốn có để chỉnh sửa mã của tôi để làm điều đó. Nhưng tôi sẽ chấp nhận điều này như là một câu trả lời dù sao, tức là "không". Có vẻ như tôi sẽ phải tự mình viết hoặc di chuyển sang vim. –

+1

Trong trường hợp có ai đó tìm kiếm trang này sau, thư viện xếp chồng dựa trên gắn thẻ này có thể quan tâm: http://lisperati.com/tagging.html –

+1

Nếu bạn * làm * kết thúc việc viết, hãy cho chúng tôi biết! Tôi đã muốn có một chế độ gấp phù hợp cho Emacs trong một thời gian dài. Tôi về cơ bản đã từ bỏ và bắt đầu sử dụng các biên tập viên khác. – quark

8

hide-show (hs-minor-mode) là một chế độ nhỏ mà sẽ làm một cái gì đó như thế này ...

Giá trị mặc định key-binding để kích hoạt gấp là C-c @ C-c mà tôi tìm thấy khá cồng kềnh. Nhưng sau đó tôi cũng không sử dụng nó nhiều.

+1

Để biết thêm chi tiết, xem: http://www.emacswiki.org/emacs/HideShow – Pete

+1

Tôi đã thấy điều này. Tôi thực sự cần một cái gì đó để ẩn một khu vực nhất định hơn là nó cố gắng để hiểu cú pháp, như tôi đã nói ở trên. Cảm ơn mặc dù. –

1

Điều gì đó bạn có thể xem xét là nxhtml-mode; không mã gấp, nhưng nó làm nổi bật mã hỗn hợp (nghĩa là HTML và PHP) khác nhau tùy thuộc vào loại của nó. Điều đó mang đến cho bạn sự tương đồng về tính toàn diện mà không có sự lúng túng của chế độ gấp. Tôi nghĩ rằng cách tiếp cận này phù hợp hơn với Emacs, đầu tiên vì code-folding có vẻ như một ý tưởng hướng chuột không thích ứng tốt với giao diện Emacs cơ bản của bàn phím, và thứ hai vì Emacs giúp dễ dàng điều hướng một tệp lớn đến mức nào đó mã đó có thể hiển thị mà không bị cản trở.

4

Bạn có thể muốn tra cứu hàm set-selective-display và biến số selective-display. Không chính xác những gì bạn muốn nhưng nó cho phép bạn ẩn các dòng dựa trên mức thụt lề.

+1

Chúc mừng, tôi đã cố gắng [nấu món gì đó] [1] bằng cách sử dụng 'set-selective-display' để ít nhất là minh họa ý tưởng gấp này cho cuộc thảo luận trong tương lai. Nó không phải là một giải pháp bởi vì nó lộn xộn với mã, nhưng đó là một minh chứng tốt. Tôi sẽ thử sử dụng gắn thẻ.el làm ví dụ để lấy ý tưởng để triển khai đúng cách này. [1]: http://chrisdone.com/blog/html/2009-08-01-emacs-folding.html#video –

3

Tôi sử dụng fold-dwim.el. Từ wiki emacs:

fold-dwim.el là giao diện người dùng thống nhất cho các chế độ gấp/phác thảo của Emacs. Nó hỗ trợ folding.el, hideshow.el, outline.el, TeX-fold.el, và nxml-outln.el

Bạn có thể lấy nó ở đây:

http://www.emacswiki.org/emacs/FoldDwim

Tôi có điều này trong tôi .emacs:

(require 'fold-dwim) 
(global-set-key [(C kp-4)] 'fold-dwim-hide-all) 
(global-set-key [(C kp-5)] 'fold-dwim-toggle) 
(global-set-key [(C kp-6)] 'fold-dwim-show-all) 

Hãy nhớ rằng bạn vẫn cần kích hoạt chế độ hs-nhỏ, gấp, vv nhưng tôi thấy dễ sử dụng hơn theo cách này.

0

Nếu bạn thực sự cần "một thứ gì đó để ẩn một vùng nhất định thay vì cố gắng hiểu cú pháp" (không giống như hideshow và các giải pháp khác dựa trên phân tích cú pháp) và bạn "không muốn phải chỉnh sửa mã của bạn" (không giống như gấp), sau đó, tôi giả sử, bạn có nghĩa là bạn không muốn các khu vực được liên tục giữa các phiên chỉnh sửa khác nhau. Sau đó, bạn có thể sử dụng để ẩn http://www.emacswiki.org/emacs/HideRegion vùng do người dùng chọn ...

(Nhưng đó là lạ Chế độ nhỏ gấp với dấu dai dẳng có vẻ là một giải pháp xa thuận tiện hơn..)

+0

ẨnRegion quá phức tạp. Tôi cần một cái gì đó mà chỉ hoạt động! –

+0

@Robin Nhưng bạn muốn nó làm gì? Câu trả lời của tôi là chỉ giấu một khu vực tùy ý một lần. –

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