이맥스 프린지에서 실행 가능한 코드 폴딩


15

코드 접기 섹션을 표시하도록 Emacs 프린지를 구성하고 싶습니다.

예를 들어, Mac의 BBEdit은 JSON 파일을 편집 할 때 다음을 표시합니다.

BBEdit 코드 접는 마크

마크 자체는 실행 가능합니다. 마크를 클릭하면 해당 코드 섹션이 확장되거나 축소됩니다. 문서에 코드 접기를 지원하는 모드가없는 경우 프린지가 표시되지 않습니다.

이러한 방식으로 Emacs 프린지 기능을 확장 할 수 있습니까?

답변:


16

Hideshowvis 는 프린지에 클릭 가능한 아이콘을 추가하지만 이상한 이유로 elpa 또는 melpa에 포함되지 않습니다. 기본적 -으로 접을 수있는 코드의 프린지에를 표시 한 다음로 컨텐츠를 제거합니다 .... 또한 hideshowvis-symbols+를 사용하면 a를 추가하고 접힌 컨텐츠에 대한 힌트를 조금 더 크게 만듭니다.

Hideshow 자체는 또한 라인에서 마우스 클릭이 디스플레이를 토글 S-mouse-2(또는 중간 클릭 이동) 할 수 있도록합니다. 기본 제공되며로 활성화 할 수 있습니다 hs-minor-mode.


1
좋습니다, hideshowvis.el은 내가 제안하는 것과 비슷한 핵을 사용하지만 (원시 이벤트를 읽음으로써) 두 번 클릭하지 않아도됩니다. 포인터 주셔서 감사합니다.
Sigma

3
Hideshowvis.el잘 작동합니다, 감사합니다! JSON 파일에서 작동하도록하는 데 문제가있었습니다 js3-mode. 이러한 문제를 해결하려면 나는 대기열에있는 모든 작업 후 확인 hideshowvis 만 활성화되어 있는지 확인했다, 예를 들면 :(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)
매튜 르 그랑

지금 멜파에 있습니다.
dshepherd

4

프린지 항목이 클릭을 직접받을 수 있다고 생각하지 않지만 (나는 틀릴 수도 있음) 가능한 해킹은 바인딩하는 것입니다. (kbd "<left-fringe> <double-mouse-1>")

첫 번째 클릭은 프린지 아이콘에 해당하는 줄의 시작 부분으로 점을 이동하므로, (point)가상 (비) 폴딩 기능 의 값을 테스트하면 코드의 어느 부분을 펼칠지 (또는) 접을 지 식별 할 수 있습니다. 당신은 아무것도 할 필요가 없습니다 (이 줄에 프린지 아이콘이없는 경우)

조직 모드 버퍼를 사용한 예 :

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

프린지를 두 번 클릭하면 해당 하위 트리가 순환됩니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.