(replace-match with t))))
(with-temp-buffer
(insert-file-contents "~/.mdw.conf")
- (replace "^[ \t]*\\(#.*\\|\\)\n" "")
+ (replace "^[ \t]*\\(#.*\\)?\n" "")
(replace (concat "^[ \t]*"
"\\([-a-zA-Z0-9_.]*\\)"
"[ \t]*=[ \t]*"
- "\\(.*[^ \t\n]\\|\\)"
+ "\\(.*[^ \t\n]\\)?"
"[ \t]**\\(\n\\|$\\)")
"(\\1 . \"\\2\")\n")
(car (read-from-string
Pretend they don't exist. They might be on other display devices."
(ad-set-arg 2 nil))
+(setq even-window-sizes nil
+ even-window-heights nil)
+
;; Rename buffers along with files.
(defvar mdw-inhibit-rename-buffer nil
(funcall tabfun (point-min) (point-max))
(setq s (buffer-substring (point-min) (1- (point-max)))))))))
-(defun mdw-examine-fill-prefixes (l)
- "Given a list of dynamic fill prefixes, pick one which matches
-context and return the static fill prefix to use. Point must be
-at the start of a line, and match data must be saved."
- (cond ((not l) nil)
- ((looking-at (car (car l)))
- (mdw-maybe-tabify (apply #'concat
- (mapcar #'mdw-do-prefix-match
- (cdr (car l))))))
- (t (mdw-examine-fill-prefixes (cdr l)))))
-
(defun mdw-maybe-car (p)
"If P is a pair, return (car P), otherwise just return P."
(if (consp p) (car p) p))
((eq (car m) 'eval) (eval (cdr m)))
(t "")))
+(defun mdw-examine-fill-prefixes (l)
+ "Given a list of dynamic fill prefixes, pick one which matches
+context and return the static fill prefix to use. Point must be
+at the start of a line, and match data must be saved."
+ (let ((prefix nil))
+ (while (cond ((null l) nil)
+ ((looking-at (caar l))
+ (setq prefix
+ (mdw-maybe-tabify
+ (apply #'concat
+ (mapcar #'mdw-do-prefix-match
+ (cdr (car l))))))
+ nil))
+ (setq l (cdr l)))
+ prefix))
+
(defun mdw-choose-dynamic-fill-prefix ()
"Work out the dynamic fill prefix based on the variable `mdw-fill-prefix'."
(cond ((and fill-prefix (not (string= fill-prefix ""))) fill-prefix)
(setq comment-column 40)
(auto-fill-mode 1)
(setq fill-column mdw-text-width)
+ (flyspell-prog-mode)
(and (fboundp 'gtags-mode)
(gtags-mode))
(if (fboundp 'hs-minor-mode)
(mdw-define-face gnus-cite-11
(t :foreground "grey"))
+(mdw-define-face gnus-emphasis-underline
+ (((type tty)) :underline t)
+ (t :slant italic))
+
(mdw-define-face diff-header
(t nil))
(mdw-define-face diff-index
(func (intern (concat "mdw-define-c-style/" name-string))))
`(progn
(setq ,var
- ',(if (null parent)
- assocs
- (let ((parent-list (symbol-value
- (intern (concat "mdw-c-style/"
- (symbol-name parent))))))
- (mdw-merge-style-alists assocs parent-list))))
+ ,(if (null parent)
+ `',assocs
+ (let ((parent-list (intern (concat "mdw-c-style/"
+ (symbol-name parent)))))
+ `(mdw-merge-style-alists ',assocs ,parent-list))))
(defun ,func () (c-add-style ,name-string ,var))
(and (featurep 'cc-mode) (,func))
(add-hook 'mdw-define-c-styles-hook ',func)
;; Fontify include files as strings.
(list (concat "^[ \t]*\\#[ \t]*"
"\\(include\\|import\\)"
- "[ \t]*\\(<[^>]+\\(>\\|\\)\\)")
+ "[ \t]*\\(<[^>]+>?\\)")
'(2 font-lock-string-face))
;; Preprocessor directives are `references'?.
;; The following isn't quite right, but it's close enough.
(list (concat "\\<\\("
"0\\([xX][0-9a-fA-F]+\\|[0-7]+\\)\\|"
- "[0-9]+\\(\\.[0-9]*\\|\\)"
- "\\([eE]\\([-+]\\|\\)[0-9]+\\|\\)\\)"
+ "[0-9]+\\(\\.[0-9]*\\)?"
+ "\\([eE][-+]?[0-9]+\\)?\\)"
"[lLfFdD]?")
'(0 mdw-number-face))
;; The following isn't quite right, but it's close enough.
(list (concat "\\_<\\("
"0\\([xX][0-9a-fA-F]+\\|[0-7]+\\)\\|"
- "[0-9]+\\(\\.[0-9]*\\|\\)"
- "\\([eE]\\([-+]\\|\\)[0-9]+\\|\\)\\)"
+ "[0-9]+\\(\\.[0-9]*\\)?"
+ "\\([eE][-+]?[0-9]+\\)?\\)"
"[lLfFdD]?")
'(0 mdw-number-face))
;; As usual, not quite right.
(list (concat "\\_<\\("
"0\\([xX][0-9a-fA-F]+\\|[0-7]+\\)\\|"
- "[0-9]+\\(\\.[0-9]*\\|\\)"
- "\\([eE]\\([-+]\\|\\)[0-9]+\\|\\)\\)"
+ "[0-9]+\\(\\.[0-9]*\\)?"
+ "\\([eE][-+]?[0-9]+\\)?\\)"
"[lLfFdD]?")
'(0 mdw-number-face))
;; The following isn't quite right, but it's close enough.
(list (concat "\\<\\("
"0\\([xX][0-9a-fA-F]+\\|[0-7]+\\)\\|"
- "[0-9]+\\(\\.[0-9]*\\|\\)"
- "\\([eE]\\([-+]\\|\\)[0-9]+\\|\\)\\)"
+ "[0-9]+\\(\\.[0-9]*\\)?"
+ "\\([eE][-+]?[0-9]+\\)?\\)"
"[lLfFdD]?")
'(0 mdw-number-face))
;; The following isn't quite right, but it's close enough.
(list (concat "\\<\\("
"0\\([xX][0-9a-fA-F]+\\|[0-7]+\\)\\|"
- "[0-9]+\\(\\.[0-9]*\\|\\)"
- "\\([eE]\\([-+]\\|\\)[0-9]+\\|\\)\\)")
+ "[0-9]+\\(\\.[0-9]*\\)?"
+ "\\([eE][-+]?[0-9]+\\)?\\)")
'(0 mdw-number-face))
;; And anything else is punctuation.
;; The following isn't quite right, but it's close enough.
(list (concat "\\<\\("
"0\\([xX][0-9a-fA-F]+\\|[0-7]+\\)\\|"
- "[0-9]+\\(\\.[0-9]*\\|\\)"
- "\\([eE]\\([-+]\\|\\)[0-9]+\\|\\)\\)"
+ "[0-9]+\\(\\.[0-9]*\\)?"
+ "\\([eE][-+]?[0-9]+\\)?\\)"
"[uUlL]*")
'(0 mdw-number-face))
;; At least numbers are simpler than C.
(list (concat "\\<0\\([xX][0-9a-fA-F_]+\\|[0-7_]+\\)\\|"
- "\\<[0-9][0-9_]*\\(\\.[0-9_]*\\|\\)"
- "\\([eE]\\([-+]\\|\\)[0-9_]+\\|\\)")
+ "\\<[0-9][0-9_]*\\(\\.[0-9_]*\\)?"
+ "\\([eE][-+]?[0-9_]+\\)?")
'(0 mdw-number-face))
;; And anything else is punctuation.
;; At least numbers are simpler than C.
(list (concat "\\_<0\\([xX][0-9a-fA-F]+\\|[oO]?[0-7]+\\|[bB][01]+\\)\\|"
- "\\_<[0-9][0-9]*\\(\\.[0-9]*\\|\\)"
- "\\([eE]\\([-+]\\|\\)[0-9]+\\|[lL]\\|\\)")
+ "\\_<[0-9][0-9]*\\(\\.[0-9]*\\)?"
+ "\\([eE][-+]?[0-9]+\\|[lL]\\)?")
'(0 mdw-number-face))
;; And anything else is punctuation.
(setq font-lock-keywords
(list
(list (concat "\\<0\\([xX][0-9a-fA-F_]+\\|[0-7_]+\\)\\|"
- "\\<[0-9][0-9_]*\\(\\.[0-9_]*\\|\\)"
- "\\([eE]\\([-+]\\|\\)[0-9_]+\\|\\)")
+ "\\<[0-9][0-9_]*\\(\\.[0-9_]*\\)?"
+ "\\([eE][-+]?[0-9_]+\\)?")
'(0 mdw-number-face))
(list "\\(\\s.\\|\\s(\\|\\s)\\|\\s\\\\|\\s/\\)"
'(0 mdw-punct-face)))))
'(0 font-lock-keyword-face))
;; At least numbers are simpler than C.
- (list (concat "\\<\\(\\~\\|\\)"
- "\\(0\\(\\([wW]\\|\\)[xX][0-9a-fA-F]+\\|"
+ (list (concat "\\<\\~?"
+ "\\(0\\([wW]?[xX][0-9a-fA-F]+\\|"
"[wW][0-9]+\\)\\|"
- "\\([0-9]+\\(\\.[0-9]+\\|\\)"
- "\\([eE]\\(\\~\\|\\)"
- "[0-9]+\\|\\)\\)\\)")
+ "\\([0-9]+\\(\\.[0-9]+\\)?"
+ "\\([eE]\\~?"
+ "[0-9]+\\)?\\)\\)")
'(0 mdw-number-face))
;; And anything else is punctuation.
(list "\\_<[A-Z]\\(\\sw+\\|\\s_+\\)*\\_>"
'(0 font-lock-variable-name-face))
(list (concat "\\_<0\\([xX][0-9a-fA-F]+\\|[oO][0-7]+\\)\\|"
- "\\_<[0-9]+\\(\\.[0-9]*\\|\\)"
- "\\([eE]\\([-+]\\|\\)[0-9]+\\|\\)")
+ "\\_<[0-9]+\\(\\.[0-9]*\\)?"
+ "\\([eE][-+]?[0-9]+\\)?")
'(0 mdw-number-face))
(list "\\(\\s.\\|\\s(\\|\\s)\\|\\s\\\\|\\s/\\)"
'(0 mdw-punct-face))))))
'(0 font-lock-keyword-face))
(list (concat "^-\\sw+\\>")
'(0 font-lock-keyword-face))
- (list "\\<[0-9]+\\(\\|#[0-9a-zA-Z]+\\|[eE][+-]?[0-9]+\\)\\>"
+ (list "\\<[0-9]+\\(#[0-9a-zA-Z]+\\|[eE][+-]?[0-9]+\\)?\\>"
'(0 mdw-number-face))
(list "\\(\\s.\\|\\s(\\|\\s)\\|\\s\\\\|\\s/\\)"
'(0 mdw-punct-face))))))
'(2 font-lock-variable-name-face))
;; Make sure we get comments properly.
- (list "@c\\(\\|omment\\)\\( .*\\)?$"
+ (list "@c\\(omment\\)?\\( .*\\)?$"
'(0 font-lock-comment-face))
;; Command names are keywords.
(setq messages-mode-keywords
(append (list (list (concat "^[ \t]*\\#[ \t]*"
"\\(include\\|import\\)"
- "[ \t]*\\(<[^>]+\\(>\\|\\)\\)")
+ "[ \t]*\\(<[^>]+\\(>\\)?\\)")
'(2 font-lock-string-face))
(list (concat "^\\([ \t]*#[ \t]*\\(\\("
preprocessor-keywords
(list
(list (concat "^%\\s *\\(}\\|\\(" keywords "\\)\\>\\).*$")
'(0 font-lock-keyword-face))
- (list "^%\\s *\\(#.*\\|\\)$"
+ (list "^%\\s *\\(#.*\\)?$"
'(0 font-lock-comment-face))
(list "^%"
'(0 font-lock-keyword-face))
(list "\\<[A-Z][a-zA-Z0-9]*\\>"
'(0 font-lock-keyword-face))
(list (concat "\\<0\\([xX][0-9a-fA-F_]+\\|[0-7_]+\\)\\|"
- "[0-9][0-9_]*\\(\\.[0-9_]*\\|\\)"
- "\\([eE]\\([-+]\\|\\)[0-9_]+\\|\\)")
+ "[0-9][0-9_]*\\(\\.[0-9_]*\\)?"
+ "\\([eE][-+]?[0-9_]+\\)?")
'(0 mdw-number-face))
(list "\\(\\s.\\|\\s(\\|\\s)\\|\\s\\\\|\\s/\\)"
'(0 mdw-punct-face)))))
(around mdw-inhibit-noip (topic) compile activate)
"Inhibit the `noip' preload hack when invoking `man'."
(let* ((old-preload (getenv "LD_PRELOAD"))
- (preloads (save-match-data (split-string old-preload ":")))
+ (preloads (and old-preload
+ (save-match-data (split-string old-preload ":"))))
(any nil)
(filtered nil))
- (while preloads
- (let ((item (pop preloads)))
- (if (save-match-data
- (string-match "\\(/\\|^\\)noip\.so\\(:\\|$\\)" item))
- (setq any t)
- (push item filtered))))
+ (save-match-data
+ (while preloads
+ (let ((item (pop preloads)))
+ (if (string-match "\\(/\\|^\\)noip\.so\\(:\\|$\\)" item)
+ (setq any t)
+ (push item filtered)))))
(if any
(unwind-protect
(progn