142 |
(let* ((mode-name (symbol-name mode)) |
(let* ((mode-name (symbol-name mode)) |
143 |
(pretty-name (easy-mmode-pretty-mode-name mode lighter)) |
(pretty-name (easy-mmode-pretty-mode-name mode lighter)) |
144 |
(globalp nil) |
(globalp nil) |
145 |
|
(set nil) |
146 |
(initialize nil) |
(initialize nil) |
147 |
(group nil) |
(group nil) |
148 |
|
(type nil) |
149 |
(extra-args nil) |
(extra-args nil) |
150 |
(extra-keywords nil) |
(extra-keywords nil) |
151 |
(require t) |
(require t) |
162 |
(:lighter (setq lighter (pop body))) |
(:lighter (setq lighter (pop body))) |
163 |
(:global (setq globalp (pop body))) |
(:global (setq globalp (pop body))) |
164 |
(:extra-args (setq extra-args (pop body))) |
(:extra-args (setq extra-args (pop body))) |
165 |
|
(:set (setq set (list :set (pop body)))) |
166 |
(:initialize (setq initialize (list :initialize (pop body)))) |
(:initialize (setq initialize (list :initialize (pop body)))) |
167 |
(:group (setq group (nconc group (list :group (pop body))))) |
(:group (setq group (nconc group (list :group (pop body))))) |
168 |
|
(:type (setq type (list :type (pop body)))) |
169 |
(:require (setq require (pop body))) |
(:require (setq require (pop body))) |
170 |
(:keymap (setq keymap (pop body))) |
(:keymap (setq keymap (pop body))) |
171 |
(t (push keyw extra-keywords) (push (pop body) extra-keywords)))) |
(t (push keyw extra-keywords) (push (pop body) extra-keywords)))) |
173 |
(setq keymap-sym (if (and keymap (symbolp keymap)) keymap |
(setq keymap-sym (if (and keymap (symbolp keymap)) keymap |
174 |
(intern (concat mode-name "-map")))) |
(intern (concat mode-name "-map")))) |
175 |
|
|
176 |
|
(unless set (setq set '(:set 'custom-set-minor-mode))) |
177 |
|
|
178 |
(unless initialize |
(unless initialize |
179 |
(setq initialize |
(setq initialize '(:initialize 'custom-initialize-default))) |
|
'(:initialize 'custom-initialize-default))) |
|
180 |
|
|
181 |
(unless group |
(unless group |
182 |
;; We might as well provide a best-guess default group. |
;; We might as well provide a best-guess default group. |
184 |
`(:group ',(intern (replace-regexp-in-string |
`(:group ',(intern (replace-regexp-in-string |
185 |
"-mode\\'" "" mode-name))))) |
"-mode\\'" "" mode-name))))) |
186 |
|
|
187 |
|
(unless type (setq type '(:type 'boolean))) |
188 |
|
|
189 |
`(progn |
`(progn |
190 |
;; Define the variable to enable or disable the mode. |
;; Define the variable to enable or disable the mode. |
191 |
,(if (not globalp) |
,(if (not globalp) |
208 |
|
|
209 |
`(defcustom ,mode ,init-value |
`(defcustom ,mode ,init-value |
210 |
,(format base-doc-string pretty-name mode mode) |
,(format base-doc-string pretty-name mode mode) |
211 |
:set 'custom-set-minor-mode |
,@set |
212 |
,@initialize |
,@initialize |
213 |
,@group |
,@group |
214 |
:type 'boolean |
,@type |
215 |
,@(cond |
,@(cond |
216 |
((not (and curfile require)) nil) |
((not (and curfile require)) nil) |
217 |
((not (eq require t)) `(:require ,require))) |
((not (eq require t)) `(:require ,require))) |