cmake-mode.el: Derive cmake-mode from prog-mode

Emacs 24 and above support a generic "prog-mode" to simplify definition
of programming modes.  Derive "cmake-mode" from it since we are a
programming mode.
This commit is contained in:
Roy Crihfield 2015-03-06 16:36:09 -05:00 committed by Brad King
parent 41d6044bcf
commit 5593f28fac
1 changed files with 23 additions and 35 deletions

View File

@ -207,12 +207,18 @@ the indentation. Otherwise it retains the same position on the line"
;------------------------------------------------------------------------------
;;
;; Syntax table for this mode. Initialize to nil so that it is
;; regenerated when the cmake-mode function is called.
;;
(defvar cmake-mode-syntax-table nil "Syntax table for cmake-mode.")
(setq cmake-mode-syntax-table nil)
;; Syntax table for this mode.
(defvar cmake-mode-syntax-table nil
"Syntax table for CMake mode.")
(or cmake-mode-syntax-table
(setq cmake-mode-syntax-table
(let ((table (make-syntax-table)))
(modify-syntax-entry ?\( "()" table)
(modify-syntax-entry ?\) ")(" table)
(modify-syntax-entry ?# "<" table)
(modify-syntax-entry ?\n ">" table)
(modify-syntax-entry ?$ "'" table)
table)))
;;
;; User hook entry point.
@ -226,41 +232,23 @@ the indentation. Otherwise it retains the same position on the line"
;------------------------------------------------------------------------------
;;
;; CMake mode startup function.
;; For compatibility with Emacs < 24
(defalias 'cmake--parent-mode
(if (fboundp 'prog-mode) 'prog-mode 'fundamental-mode))
;;------------------------------------------------------------------------------
;; Mode definition.
;;
;;;###autoload
(defun cmake-mode ()
"Major mode for editing CMake listfiles."
(interactive)
(kill-all-local-variables)
(setq major-mode 'cmake-mode)
(setq mode-name "CMAKE")
; Create the syntax table
(setq cmake-mode-syntax-table (make-syntax-table))
(set-syntax-table cmake-mode-syntax-table)
(modify-syntax-entry ?\( "()" cmake-mode-syntax-table)
(modify-syntax-entry ?\) ")(" cmake-mode-syntax-table)
(modify-syntax-entry ?# "<" cmake-mode-syntax-table)
(modify-syntax-entry ?\n ">" cmake-mode-syntax-table)
(define-derived-mode cmake-mode cmake--parent-mode "CMake"
"Major mode for editing CMake source files."
; Setup font-lock mode.
(make-local-variable 'font-lock-defaults)
(setq font-lock-defaults '(cmake-font-lock-keywords))
(set (make-local-variable 'font-lock-defaults) '(cmake-font-lock-keywords))
; Setup indentation function.
(make-local-variable 'indent-line-function)
(setq indent-line-function 'cmake-indent)
(set (make-local-variable 'indent-line-function) 'cmake-indent)
; Setup comment syntax.
(make-local-variable 'comment-start)
(setq comment-start "#")
; Run user hooks.
(if (boundp 'prog-mode-hook)
(run-hooks 'prog-mode-hook 'cmake-mode-hook)
(run-hooks 'cmake-mode-hook)))
(set (make-local-variable 'comment-start) "#"))
; Help mode starts here