(and (library-exists-p file)
(autoload symbol file docstring interactivep type)))
+(defun mdw-kick-menu-bar (&optional frame)
+ "Regenerate FRAME's menu bar so it doesn't have empty menus."
+ (interactive)
+ (unless frame (setq frame (selected-frame)))
+ (let ((old (frame-parameter frame 'menu-bar-lines)))
+ (set-frame-parameter frame 'menu-bar-lines 0)
+ (set-frame-parameter frame 'menu-bar-lines old)))
+
;; Splitting windows.
(unless (fboundp 'scroll-bar-columns)
;; Utility functions.
-(defun mdw-tabify (s)
- "Tabify the string S. This is a horrid hack."
- (save-excursion
- (save-match-data
- (let (start end)
- (beginning-of-line)
- (setq start (point-marker))
+(defun mdw-maybe-tabify (s)
+ "Tabify or untabify the string S, according to `indent-tabs-mode'."
+ (let ((tabfun (if indent-tabs-mode #'tabify #'untabify)))
+ (with-temp-buffer
+ (save-match-data
(insert s "\n")
- (setq end (point-marker))
- (tabify start end)
- (setq s (buffer-substring start (1- end)))
- (delete-region start end)
- (set-marker start nil)
- (set-marker end nil)
- s))))
+ (let ((start (point-min)) (end (point-max)))
+ (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
at the start of a line, and match data must be saved."
(cond ((not l) nil)
((looking-at (car (car l)))
- (mdw-tabify (apply (function concat)
- (mapcar (function mdw-do-prefix-match)
- (cdr (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)
(mdw-define-face default
(((type w32)) :family "courier new" :height 85)
- (((type x)) :family "6x13" :height 130)
+ (((type x)) :family "6x13" :foundry "trad" :height 130)
(((type color)) :foreground "white" :background "black")
(t nil))
(mdw-define-face fixed-pitch
(((type w32)) :family "courier new" :height 85)
- (((type x)) :family "6x13" :height 130)
+ (((type x)) :family "6x13" :foundry "trad" :height 130)
(t :foreground "white" :background "black"))
(if (>= emacs-major-version 23)
(mdw-define-face variable-pitch
(((class color)) :background "red")
(t :inverse-video t))
(mdw-define-face highlight
- (((class color)) :background "DarkSeaGreen4")
+ (((type x) (class color)) :background "DarkSeaGreen4")
+ (((type tty) (class color)) :background "cyan")
(t :inverse-video t))
(mdw-define-face holiday-face
(mdw-define-face diff-context
(t nil))
(mdw-define-face diff-refine-change
- (t :background "RoyalBlue4"))
+ (((class color) (type x)) :background "RoyalBlue4")
+ (t :underline t))
+
+(mdw-define-face magit-diff-add
+ (t :foreground "green"))
+(mdw-define-face magit-diff-del
+ (t :foreground "red"))
+(mdw-define-face magit-diff-file-header
+ (t :weight bold))
+(mdw-define-face magit-diff-hunk-header
+ (t :foreground "SkyBlue1"))
+(mdw-define-face magit-item-highlight
+ (((type tty)) :background "blue")
+ (t :background "gray95"))
(mdw-define-face erc-input-face
(t :foreground "red"))
(mdw-define-face woman-italic
(t :slant italic))
+(eval-after-load "rst"
+ '(progn
+ (mdw-define-face rst-level-1-face
+ (t :foreground "SkyBlue1" :weight bold))
+ (mdw-define-face rst-level-2-face
+ (t :foreground "SeaGreen1" :weight bold))
+ (mdw-define-face rst-level-3-face
+ (t :weight bold))
+ (mdw-define-face rst-level-4-face
+ (t :slant italic))
+ (mdw-define-face rst-level-5-face
+ (t :underline t))
+ (mdw-define-face rst-level-6-face
+ ())))
+
(mdw-define-face p4-depot-added-face
(t :foreground "green"))
(mdw-define-face p4-depot-branch-op-face
(mdw-define-face p4-diff-ins-face
(t :foreground "green"))
+(mdw-define-face w3m-anchor-face
+ (t :foreground "SkyBlue1" :underline t))
+(mdw-define-face w3m-arrived-anchor-face
+ (t :foreground "SkyBlue1" :underline t))
+
(mdw-define-face whizzy-slice-face
(t :background "grey10"))
(mdw-define-face whizzy-error-face
;; Ellipses used to indicate hidden text (and similar).
(mdw-define-face mdw-ellipsis-face
(((type tty)) :foreground "blue") (t :foreground "grey60"))
-(let ((dot (make-glyph-code ?. 'mdw-ellipsis-face)))
+(let ((dollar (make-glyph-code ?$ 'mdw-ellipsis-face))
+ (backslash (make-glyph-code ?\ 'mdw-ellipsis-face))
+ (dot (make-glyph-code ?. 'mdw-ellipsis-face))
+ (bar (make-glyph-code ?| mdw-ellipsis-face)))
+ (set-display-table-slot standard-display-table 0 dollar)
+ (set-display-table-slot standard-display-table 1 backslash)
(set-display-table-slot standard-display-table 4
- (vector dot dot dot)))
+ (vector dot dot dot))
+ (set-display-table-slot standard-display-table 5 bar))
;;;--------------------------------------------------------------------------
;;; C programming configuration.
(list
;; Handle the keywords defined above.
- (list (concat "\\<\\(" javascript-keywords "\\)\\>")
+ (list (concat "\\_<\\(" javascript-keywords "\\)\\_>")
'(0 font-lock-keyword-face))
;; Handle the predefined constants defined above.
- (list (concat "\\<\\(" javascript-constants "\\)\\>")
+ (list (concat "\\_<\\(" javascript-constants "\\)\\_>")
'(0 font-lock-variable-name-face))
;; Handle numbers too.
;;
;; The following isn't quite right, but it's close enough.
- (list (concat "\\<\\("
+ (list (concat "\\_<\\("
"0\\([xX][0-9a-fA-F]+\\|[0-7]+\\)\\|"
"[0-9]+\\(\\.[0-9]*\\|\\)"
"\\([eE]\\([-+]\\|\\)[0-9]+\\|\\)\\)"
(list
;; Set up the keywords defined above.
- (list (concat "\\<\\(" keywords "\\)\\>")
+ (list (concat "\\_<\\(" keywords "\\)\\_>")
'(0 font-lock-keyword-face))
;; At least numbers are simpler than C.
- (list (concat "\\<0\\([xX][0-9a-fA-F_]+\\|[0-7_]+\\)\\|"
- "\\<[0-9][0-9_]*\\(\\.[0-9_]*\\|\\)"
+ (list (concat "\\_<0\\([xX][0-9a-fA-F_]+\\|[0-7_]+\\)\\|"
+ "\\_<[0-9][0-9_]*\\(\\.[0-9_]*\\|\\)"
"\\([eE]\\([-+]\\|\\)[0-9_]+\\|[lL]\\|\\)")
'(0 mdw-number-face))