emacs에서 모드 만들기
회사에서 자체적으로 가지고 있는 프로그램의 input 작성용으로 아래와 같이 만들어 보았는데요.
코멘트부분이 하이라이팅이 되질 않네요.
emacs 리스프를 잘 몰라서 삽질을 했는데도 절망입니다.
/* blah blah */ 또는 맨 앞줄에 C를 타입해 놓으면 코멘트로 인식되길 원합니다.
좀 도와주세요.
감사합니다.
;;; flex.el -- Major mode for editing flex
;;(defvar flex-mode-syntax-table
;; (let ((st (make-syntax-table)))
;; (modify-syntax-entry ?* "<" st)
;; (modify-syntax-entry ?* ">" st)
;; st)
;; "Syntax table for `flex-mode'.")
(defvar flex-font-lock-keywords
`((,(concat "\\<"
(regexp-opt '("abls" "axis" "bar" "bmat" "bm3d" "bond" "boun" "calc" "circ" "data" "drlx" "echo" "exam" "exec" "extr" "ffld" "func" "gcon" "geom" "glue" "grav" "grid" "grph" "heat" "intr" "isln" "job" "ldef" "line" "linr" "magn" "mass" "matr" "mbrn" "mem" "membrane" "mgr" "modl" "mods" "mp" "old" "outp" "piez" "plod" "pnbl" "pout" "pplt" "prcs" "prnt" "regrid" "rest" "riera" "rigd" "set" "shap" "shel" "show" "site" "stop" "term" "time" "titl" "trns" "user" "watr" "wndo" "xfil" "zone") t)
"\\>") (0 font-lock-keyword-face))
(,(concat "\\<"
(regexp-opt '("prop" "sect" "elem" "gcon" "del" "out1" "node" "plot" "eye" "vert" "clos" "end" "type" "rate" "hist" "xcrd" "ycrd" "zcrd" "regn" "grup" "optn" "erod" "gend" "tinc" "vpnt" "bc" "fix" "skew" "defn" "rnod" "csec" "pdef" "sdef" "vctr") t)
"\\>") (0 font-lock-function-name-face))
(,(concat "\\<"
(regexp-opt '("symb") t)
"\\>") (0 font-lock-string-face))
("\\s *@\\w+" (0 font-lock-function-name-face))
("\\b\\(left\\$\\)\\s *(" (1 font-lock-string-face))
("\\b\\(right\\$\\)\\s *(" (1 font-lock-string-face))
)
"Keyword highlighting specification for `flex-mode'.")
(define-derived-mode flex-mode fundamental-mode "FLEX"
"A major mode for editing .flex files."
(make-local-variable 'comment-start)
(setq comment-start "/* ")
(make-local-variable 'comment-end)
(setq comment-end " */")
(set (make-local-variable 'font-lock-defaults)
'(flex-font-lock-keywords))
)
(setq major-mode 'flex-mode)
(setq mode-name "FLEX")
(local-set-key "\t" " ") ;; define tab key
(run-hooks 'flex-mode-hook)
(provide 'flex-mode)
댓글 달기