Commit 3968c89f authored by Masatake YAMATO's avatar Masatake YAMATO
Browse files

Added makefile-imake-mode.

parent 11b07c37
......@@ -1876,9 +1876,9 @@ subprocess are controlled by the user options `scheme-trace-command',
`scheme-untrace-command' and `scheme-expand-current-form'.
 
---
** Makefile mode has submodes for automake, gmake, makepp and BSD make.
** Makefile mode has submodes for automake, gmake, makepp, BSD make and imake.
 
The former two couldn't be differentiated before, and the latter two
The former two couldn't be differentiated before, and the latter three
are new. Font-locking is robust now and offers new customizable
faces.
 
......
2006-01-18 Masatake YAMATO <jet@gyve.org>
* progmodes/make-mode.el (makefile-imake-mode): New mode
derived from maiefile-mode.
(makefile-imake-mode-syntax-table): New syntax table
derived from makefile-mode-syntax-table.
(makefile-mode): Write about makefile-imake-mode in
doc string.
(makefile-mode-map): Bind "\C-c\C-m\C-i" to makefile-imake-mode.
(makefile-imake-font-lock-keywords): New font lock keywords.
* files.el (auto-mode-alist): Added Imakefile.
2006-01-17 Agustin Martin <agustin.martin@hispalinux.es>
 
* textmodes/flyspell.el (ispell-kill-ispell-hook): Add to the hook when
......
......@@ -1812,6 +1812,7 @@ in that case, this function acts as if `enable-local-variables' were t."
("\\.ad[abs]\\'" . ada-mode)
("\\.ad[bs].dg\\'" . ada-mode)
("\\.\\([pP]\\([Llm]\\|erl\\|od\\)\\|al\\)\\'" . perl-mode)
("Imakefile\\'" . makefile-imake-mode)
,@(if (memq system-type '(berkeley-unix next-mach darwin))
'(("\\.mk\\'" . makefile-bsdmake-mode)
("GNUmakefile\\'" . makefile-gmake-mode)
......
......@@ -489,6 +489,19 @@ not be enclosed in { } or ( )."
"^\\(?: [ \t]*\\)?\\.\\(?:el\\)?if\\(n?\\)\\(?:def\\|make\\)?\\>[ \t]*\\(!?\\)"
'("^[ \t]*\\.for[ \t].+[ \t]\\(in\\)\\>" 1 font-lock-keyword-face)))
(defconst makefile-imake-font-lock-keywords
(append
(makefile-make-font-lock-keywords
makefile-var-use-regex
makefile-statements
t
nil
'("^XCOMM.*$" . font-lock-comment-face)
'("XVAR\\(?:use\\|def\\)[0-9]" 0 font-lock-keyword-face prepend)
'("@@" . font-lock-preprocessor-face)
)
cpp-font-lock-keywords))
(defconst makefile-font-lock-syntactic-keywords
;; From sh-script.el.
......@@ -581,6 +594,7 @@ The function must satisfy this calling convention:
(define-key map "\C-c\C-m\C-a" 'makefile-automake-mode)
(define-key map "\C-c\C-m\C-b" 'makefile-bsdmake-mode)
(define-key map "\C-c\C-m\C-g" 'makefile-gmake-mode)
(define-key map "\C-c\C-m\C-i" 'makefile-imake-mode)
(define-key map "\C-c\C-m\C-m" 'makefile-mode)
(define-key map "\C-c\C-m\C-p" 'makefile-makepp-mode)
(define-key map "\M-p" 'makefile-previous-dependency)
......@@ -639,6 +653,15 @@ The function must satisfy this calling convention:
(modify-syntax-entry ?# "< " makefile-mode-syntax-table)
(modify-syntax-entry ?\n "> " makefile-mode-syntax-table))
(defvar makefile-imake-mode-syntax-table (copy-syntax-table
makefile-mode-syntax-table))
(if makefile-imake-mode-syntax-table
()
(modify-syntax-entry ?/ ". 14" makefile-imake-mode-syntax-table)
(modify-syntax-entry ?* ". 23" makefile-imake-mode-syntax-table)
(modify-syntax-entry ?# "'" makefile-imake-mode-syntax-table)
(modify-syntax-entry ?\n ". b" makefile-imake-mode-syntax-table))
;;; ------------------------------------------------------------
;;; Internal variables.
......@@ -701,7 +724,8 @@ The function must satisfy this calling convention:
If you are editing a file for a different make, try one of the
variants `makefile-automake-mode', `makefile-gmake-mode',
`makefile-makepp-mode' or `makefile-bsdmake-mode'. All but the
`makefile-makepp-mode', `makefile-bsdmake-mode' or,
`makefile-imake-mode'All but the
last should be correctly chosen based on the file name, except if
it is *.mk. This function ends by invoking the function(s)
`makefile-mode-hook'.
......@@ -885,6 +909,20 @@ Makefile mode can be configured by modifying the following variables:
(setq font-lock-defaults
`(makefile-bsdmake-font-lock-keywords ,@(cdr font-lock-defaults))))
;;;###autoload
(define-derived-mode makefile-imake-mode makefile-mode "Imakefile"
"An adapted `makefile-mode' that knows about imake."
:syntax-table makefile-imake-mode-syntax-table
(let ((base `(makefile-imake-font-lock-keywords ,@(cdr font-lock-defaults)))
new)
;; Remove `font-lock-syntactic-keywords' entry from font-lock-defaults.
(mapc (lambda (elt)
(unless (and (consp elt)
(eq (car elt) 'font-lock-syntactic-keywords))
(setq new (cons elt new))))
base)
(setq font-lock-defaults (nreverse new))))
;;; Motion code.
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment