EMACS의 주요 모드에 대한 'Hello World'예?
-
21-08-2019 - |
문제
누구든지 EMACS의 주요 모드에 대한 Hello World 예제를 제공 할 수 있습니까? 나는 그것이 초보자 질문이라고 생각합니다. 아직도 나는 사용자 정의를 최대한 활용할 수 있도록 EMAC와 ELISP를 배우기 위해 주요 모드를 작성하고 싶습니다.
내가 지금까지 한 일 (그리고 작동 중) :
- 파일 Sample-Mode.el을 작성하여 Lisp Dir에 넣습니다.
- .Emacs로 호출됩니다
(require 'sample-mode)
- 그것에 약간의 수비를 썼고 결국 그것을 제공했습니다.
(provide 'sample-mode)
그러나 여전히 그렇지 않은 것 같습니다 활성화, 나는 m- 샘플 모드로 호출 할 수 없다.
그래서 어떻게해야합니까? 그리고 누구든지 작업 샘플과 같은 매우 간단한 Hello World를 제공 할 수 있습니까?
해결책
좋아, 좀 더 인터넷 검색 후에 나는 적어도 하나의 스텝 퓨터이다 :
(define-derived-mode sample-mode ...)
제공은 내가 처음 생각했던대로 모드를 정의하지 않기 때문에 .. 이것은 내가 찾았습니다.
http://xahlee.org/emacs/elisp_syntax_coloring.html
Emacs 애호가들에게 아주 좋은 사이트.
그것의 도움으로 : 나는 지금 HelloWorld 예를 직접 만들었습니다. 그것은 가능한 한 작은 csharp 모드입니다. 나는 사용했다 euler1 Helloworld가 아닌 예로. 알아야 할 파일은 다음과 같습니다.
- 모드 파일이 적용됩니다
Euler1.cs
- .Emacs
- 물론 모드 자체입니다
그림은 가치가 있기 때문에 최소한 많은 단어 : 1 화면의 모든 파일 :
그러나이 멋진 사진은 절반의 시간이 사라지는 것처럼 보이기 때문에 (누구나 실마리? 새로운 탭에서 열면 항상 그것을 가져오고 URL은 괜찮습니다) 일부 단어도 :-) : :-) :
모드 : CS-Mode.el
(setq myKeywords '(("WriteLine" . font-lock-function-name-face) ("public\\|static\\|void\\|int\\|for\\|if\\|class" . font-lock-constant-face))) (define-derived-mode cs-mode fundamental-mode (setq font-lock-defaults '(myKeywords))) (provide 'cs-mode)
.CS 파일을 오른쪽 모드에서 열 수있게하는 .emacs는 다음과 같습니다.
;; cs (require 'cs-mode) (add-to-list 'auto-mode-alist '("\\.cs\\'" . cs-mode))
그리고 그게 전부 : cs-code
그 자체는 그녀의 쓸모가 없기 때문에 키 워드를 색칠하는 효과를 나타내지 않기 때문입니다. 그 사진을 보거나 다른 탭/창에서 그림을 엽니 다.
건배, ph
다른 팁
웹 주변에는 몇 가지 예가 있습니다 이와 같이. 여러 EMACS 책을 추천 할 수도 있습니다.
- 학습 GNU EMACS (최고의 IMHO)
- GNU EMACS 확장
- 공식 GNU EMACS LISP 참조/매뉴얼
글쎄, 시작하자 이 답변, 사용하는 define-generic-mode
.
다음과 같은 일부 주석 문자로 살을 gi. /* */
, 일부 키워드 : hello
hi
기타, 원래 답변에서 얼굴을 재사용, 파일 확장자 .hello
, 추가 사용자 정의를 수행하기위한 기능 호출.
자동로드 작동을위한 추가 라인이 있지만 loadDefs.el을 생성하십시오 파일. 그것은 Hello World보다 더 발전했습니다.
그리고 당신은 이것으로 끝납니다.
(make-face 'my-date-face)
(set-face-attribute 'my-date-face nil :underline t)
(set-face-attribute 'my-date-face nil :family "times")
(set-face-attribute 'my-date-face nil :slant 'normal)
(set-face-attribute 'my-date-face nil :height '340)
;;;###autoload
(define-generic-mode hello-world
'(("/*" . "*/")) ; comment characters
'("hello" "hi" "howdy" "greetings" "hola") ; keywords
'(("\\([0-9]+/[0-9]+/[0-9]+\\)"
(1 'my-date-face))) ; font lock
'("\\.hello$") ; auto-mode-alist
'(hello-world-special-setup) ; function-list
"An example major mode.
We have comments, keywords, a special face for dates, and recognize .hello files.")
(defun hello-world-special-setup ()
"Some custom setup stuff done here by mode writer."
(message "You've just enabled the most amazing mode ever."))
ELISP 매뉴얼에는 주요 모드가 꽤 잘 소개되며 "Hello-World"를 제공하는 노드가 포함되어 있습니다. 예. 적어도 그것이 의도라고 생각합니다.
이 예제는 당신이 찾고있는 모든 것을 다루지 않을 수 있습니다. 이 경우 사용자가 더 많은 사용자에게 도움이 될 수있는 모든 것을 요청하는 것을 고려하십시오. 그렇게하려면 사용하십시오 M-x report-emacs-bug
(이는 강화 요청도 마찬가지입니다).