이 질문은 다른 것과 관련이 있습니다 Emacs :TODO indicator at left side. 나는 최근에 많은 것을 좋아하는 부 모드를 발견했다. FixmeMode. TODO 기호의 자동 강조 표시를 지원하고 그 사이를 탐색합니다. 그러나 전체 파일을 오염시키는 것보다는 주석에있는 "TODO"문자열을 인식하는 것이 더 중요하다고 생각합니다. 가능한가?이맥스 : 강조 표시 TODO * only in comments
답변
체크 아웃 도서관 fic-mode.el은, 그것은 C에서 검증 된 ++ 및 이맥스 리스프.
이 질문에 대답하기 위해 특별히 작성되었습니다. 여러 모드에 추가 할 수있는 쉬운 방법을 요청 않았다
(require 'fic-mode)
(add-hook 'c++-mode-hook 'turn-on-fic-mode)
Wei Hu하지만, 그래서 여기 간다 :
설치는 표준 패키지처럼
(defun add-something-to-mode-hooks (mode-list something)
"helper function to add a callback to multiple hooks"
(dolist (mode mode-list)
(add-hook (intern (concat (symbol-name mode) "-mode-hook")) something)))
(add-something-to-mode-hooks '(c++ tcl emacs-lisp) 'turn-on-fic-mode)
상당히 까다 롭습니다. 픽스 메 모드에서는 font-lock
을 사용하여 강조 표시를하므로 키워드를 강조 표시하기 위해 유형별로 작동합니다. 글꼴 잠금은 매우 낮은 수준에서 후크합니다. 기본적으로 모든 변경 후에 버퍼의 내용이 실행됩니다. 그것은 현대 컴퓨터에서 즉각적으로 나타날 수 있도록 고도로 최적화되어 있습니다.
왼쪽 가장자리의 TODO 표시기는 고정되어 있습니다. 함수를 실행하면 현재 TODO가 모두 강조 표시됩니다. 버퍼를 변경 (TODO 추가 또는 제거)하면 프린지 인디케이터가 변경되지 않습니다. 함수가 다시 실행될 때만 변경됩니다.
접근법은 구문 표에 들어가야합니다. 먼저 주석을 작성한 다음 키워드를 찾으십시오. 까다로운 부분은 대화식으로 (즉, 입력 할 때) 이렇게하는 것입니다. 이 작업을 수행하려면 font-lock
구문을 사용할 수 있어야하지만 주석 구문 표를 검색 한 다음 키워드에 대해 제공하는 함수는 버퍼가 변경 될 때마다 실행되므로 매우 효율적입니다. 변경된 지역에서만 실행됩니다.) 이 모든 것을 font-lock-keywords
이 아닌 font-lock-syntactic-keywords
에 채우기를 원할 것입니다. 구문 패스가 키워드 전달 전에 발생하기 전에 구문 키워드 패스가 발생하고 주석 자체가 설정되기 전에 주석 내에 TODO를 설정해야하기 때문입니다.
와우. 그건 내가 생각했던 것보다 훨씬 까다 롭다. –
생각보다 쉽고 까다 롭습니다. 전체 폰트 잠금 고리와 결합은 그다지 어렵지는 않지만, 어려운 점이 있습니다. 왜냐하면 여러분이 코멘트에 있는지 알아내는 것이 정말 까다 롭기 때문입니다. 적어도 나는 지금까지 그것을 이해할 수 없었다. 그래서 코드 예는 아직 없습니다 ..... –
미안해 전체 작업 코드 답이 아니다는 ..... 어쩌면이 도움이 될 것입니다 CC-모드에서 FN c-in-literal
및 CSHARP 모드에서 비슷한 csharp-in-literal
이있다. 반환 값은 C 스타일의 주석 인 경우 이고, C 타입의 주석 인 경우 c++
인 경우 스타일 주석입니다. 원하는 코드를 얻으려면 코드에 Emacs :TODO indicator at left side 을 추가하면됩니다.
(defun annotate-todo()
"put fringe marker on TODO: lines in the curent buffer"
(interactive)
(let (lit)
(save-excursion
(goto-char (point-min))
(while (re-search-forward "TODO:" nil t)
(progn
(setq lit (c-in-literal)) ;; or csharp-in-literal
(if (or (eq lit 'c) (eq lit 'c++))
(let ((overlay (make-overlay (- (point) 5) (point))))
(overlay-put overlay 'before-string
(propertize "A"
'display
'(left-fringe ;; right
horizontal-bar
better-fringes-important-bitmap))))))))))
답해 주셔서 감사합니다. @Joe가 말했듯이, FixmeMode가 개선 된 답변을 정말 좋아할 것입니다. FixmeMode가 형식 기반으로 작동하기 때문입니다. –
그래, 그건 의미가있다.측면에서 볼 때, 이미 화면에있는 것을 강조하는 것이 소스 코드에서 FIXME의 대략적인 위치를 시각적으로 표시하는 것만 큼 유용하지는 않습니다. 시각적 인 diff 도구는 컴파일 오류를 표시하는 Eclipse와 마찬가지로 Visual Studio에서도 마찬가지입니다. 나는 그것에 대해 개별적으로 물었다 : http://stackoverflow.com/questions/2348679/emacs-todo-indicator-on-left-fringe-has-a-strange-side-effect-deleting-charact – Cheeso
- 1. 이맥스 텍스트 모드 강조 표시
- 2. 이맥스 메이저 모드에서 올바르게 강조 표시
- 3. Doxygen으로 이맥스 C 모드 채우기 단락 Comments
- 4. # TODO in rails
- 5. ToDo-App 체크 표시
- 6. 파이썬 대화식 모드 이맥스 강조 표시 및 들여 쓰기
- 7. sizeof (* this) in header only constructor implementation
- 8. show * only * docstring in Sphinx documentation
- 9. 이맥스 내가 표시
- 10. 이맥스 : 왼손잡이의 TODO 표시기에 이상한 부작용이 있습니다 - 문자 삭제
- 11. 이맥스 : 나는 평가하여 현재 행을 강조
- 12. Jquery : 클릭시 테이블 행 강조 표시/강조 표시
- 13. 코드 검토 "ToDo"후속 항목
- 14. ListView에서 옵션 강조 표시
- 15. Dreamweaver 코드보기 강조 표시
- 16. 데이터베이스의 코드 강조 표시
- 17. 터빈 구문 강조 표시
- 18. 오프셋이있는 텍스트 강조 표시
- 19. 제출시 컨트롤을 강조 표시
- 20. 출력의 구문 강조 표시
- 21. ComboBox 강조 표시
- 22. 버퍼 강조 표시
- 23. MicroEmacs의 구문 강조 표시
- 24. Textmate 여백 강조 표시
- 25. PyQt4 강조 표시
- 26. 선택된 행을 강조 표시
- 27. UIBarButtonItem에서 강조 표시 해제
- 28. jQuery로 강조 표시 행
- 29. 구문 Drupal의 강조 표시
- 30. NSButton 강조 표시
좋은 일, 고마워! 이렇게 간단한 코드로 어떻게이 작업을 해결할 수 있었는지 간단히 설명해 주시겠습니까? 또한 모드 훅을 하나씩 추가하는 대신 모든 활성화 된 모드를 정의하는 데 사용할 수있는 사용자 정의 가능한 변수'fic-modes '를 갖는 것이 좋습니다. –
@WeiHu 아주 작은 코드로 어떻게 해결 되었는가에 관해서는 코드를 읽는 것만으로 가치가 있습니다. font-lock은 문제를 해결할 수있는 풍부한 프레임 워크를 제공합니다. 실제 키는 하이라이트 할 문자열을 결정하는 루틴 (정규 표현식과 반대)을 호출하는 폰트 잠금 설정을 사용하는 것이 었습니다 ("fic-search-for-keyword"가 될 것입니다). 문자열이 주석/문자열에 있음을 나타냅니다. –
그래서 문자열과 주석이 특별한 글꼴을 사용한다는 사실을 이용하고 있습니다. 가양 성이있을 수 있습니까? –