X-Git-Url: https://git.distorted.org.uk/~mdw/profile/blobdiff_plain/c4b18360a1a1f0f26ba6aca71eeb118ed60fd49e..9b63bcd202c155b89006415deddb5f88fbe77832:/el/dot-emacs.el diff --git a/el/dot-emacs.el b/el/dot-emacs.el index e9390dd..4cca329 100644 --- a/el/dot-emacs.el +++ b/el/dot-emacs.el @@ -137,6 +137,33 @@ library." ((eq side 'left) 1) (t 2)))) +(defun mdw-horizontal-window-overhead () + "Computes the horizontal window overhead. +This is the number of columns used by fringes, scroll bars and other such +cruft." + (if (not window-system) + 1 + (let ((tot 0)) + (dolist (what '(scroll-bar fringe)) + (dolist (side '(left right)) + (incf tot (funcall (intern (concat (symbol-name what) "-columns")) + side)))) + tot))) + +(defun mdw-split-window-horizontally (&optional width) + "Split a window horizontally. +Without a numeric argument, split the window approximately in +half. With a numeric argument WIDTH, allocate WIDTH columns to +the left-hand window (if positive) or -WIDTH columns to the +right-hand window (if negative). Space for scroll bars and +fringes is not taken out of the allowance for WIDTH, unlike +\\[split-window-horizontally]." + (interactive "P") + (split-window-horizontally + (cond ((null width) nil) + ((>= width 0) (+ width (mdw-horizontal-window-overhead))) + ((< width 0) width)))) + (defun mdw-divvy-window (&optional width) "Split a wide window into appropriate widths." (interactive "P") @@ -146,16 +173,7 @@ library." 77) (t 78))) (let* ((win (selected-window)) - (sb-width (if (not window-system) - 1 - (let ((tot 0)) - (dolist (what '(scroll-bar fringe)) - (dolist (side '(left right)) - (incf tot - (funcall (intern (concat (symbol-name what) - "-columns")) - side)))) - tot))) + (sb-width (mdw-horizontal-window-overhead)) (c (/ (+ (window-width) sb-width) (+ width sb-width)))) (while (> c 1) @@ -516,7 +534,8 @@ If NEW-SESSION-P, start a new session." (select-window window))))) (defvar mdw-good-url-browsers - '((w3m . mdw-w3m-browse-url) + '(browse-url-generic + (w3m . mdw-w3m-browse-url) browse-url-w3 browse-url-mozilla) "List of good browsers for mdw-good-url-browsers. @@ -598,7 +617,7 @@ It in turn is a list of things: (defvar mdw-hanging-indents (concat "\\(\\(" - "\\([*o]\\|-[-#]?\\|[0-9]+\\.\\|\\[[0-9]+\\]\\|([a-zA-Z])\\)" + "\\([*o+]\\|-[-#]?\\|[0-9]+\\.\\|\\[[0-9]+\\]\\|([a-zA-Z])\\)" "[ \t]+" "\\)?\\)") "*Standard regexp matching parts of a hanging indent. @@ -699,6 +718,15 @@ case." (defvar mdw-auto-indent t "Whether to indent automatically after a newline.") +(defun mdw-whitespace-mode (&optional arg) + "Turn on/off whitespace mode, but don't highlight trailing space." + (interactive "P") + (when (and (boundp 'whitespace-style) + (fboundp 'whitespace-mode)) + (let ((whitespace-style (remove 'trailing whitespace-style))) + (whitespace-mode arg)) + (setq show-trailing-whitespace whitespace-mode))) + (defun mdw-misc-mode-config () (and mdw-auto-indent (cond ((eq major-mode 'lisp-mode) @@ -715,8 +743,7 @@ case." (auto-fill-mode 1) (setq fill-column 77) (setq show-trailing-whitespace t) - (let ((whitespace-style (remove 'trailing whitespace-style))) - (trap (whitespace-mode t))) + (mdw-whitespace-mode 1) (and (fboundp 'gtags-mode) (gtags-mode)) (outline-minor-mode t) @@ -725,8 +752,7 @@ case." (trap (turn-on-font-lock))) (defun mdw-post-config-mode-hack () - (let ((whitespace-style (remove 'trailing whitespace-style))) - (trap (whitespace-mode t)))) + (mdw-whitespace-mode 1)) (eval-after-load 'gtags '(progn @@ -767,26 +793,13 @@ doesn't match any of the regular expressions in (when (and frame-display (eq window-system 'x) (not (some (lambda (fr) - (message "checking frame %s" frame) (and (not (eq fr frame)) (string= (frame-parameter fr 'display) - frame-display) - (progn "frame %s still uses us" nil))) + frame-display))) (frame-list)))) (run-with-idle-timer 0 nil #'x-close-connection frame-display)))) (add-hook 'delete-frame-functions 'mdw-last-one-out-turn-off-the-lights) -(defvar mdw-frame-parameters-alist - '((nil (menu-bar-lines . 0)))) -(defun mdw-set-frame-parameters (frame) - (let ((params (assq (if (fboundp 'window-system) - (window-system frame) - window-system) - mdw-frame-parameters-alist))) - (when params - (modify-frame-parameters frame (cdr params))))) -(add-hook 'after-make-frame-functions 'mdw-set-frame-parameters) - ;;;-------------------------------------------------------------------------- ;;; General fontification. @@ -813,7 +826,7 @@ doesn't match any of the regular expressions in (mdw-define-face variable-pitch (((type x)) :family "sans" :height 100)) (mdw-define-face variable-pitch - (((type x)) :family "helvetica" :height 120))) + (((type x)) :family "helvetica" :height 90))) (mdw-define-face region (((type tty) (class color)) :background "blue") (((type tty) (class mono)) :inverse-video t) @@ -909,6 +922,8 @@ doesn't match any of the regular expressions in (((type tty)) :foreground "green") (t :foreground "SeaGreen1")) (mdw-define-face message-header-name (((type tty)) :foreground "green") (t :foreground "SeaGreen1")) +(mdw-define-face which-func + (t nil)) (mdw-define-face diff-index (t :weight bold)) @@ -1539,6 +1554,7 @@ strip numbers instead." ;; Miscellaneous fiddling. (mdw-standard-fill-prefix "\\([ \t]*#+[ \t]*\\)") + (setq indent-tabs-mode nil) ;; Now define fontification things. (make-local-variable 'font-lock-keywords) @@ -2185,7 +2201,6 @@ strip numbers instead." (modify-syntax-entry ?\n ">" messages-mode-syntax-table) (setq comment-start "# ") (setq comment-end "") - (turn-on-font-lock-if-enabled) (run-hooks 'messages-mode-hook)) (defun cpp-messages-mode () @@ -2212,7 +2227,6 @@ strip numbers instead." "\\)\\>\\|[0-9]+\\|$\\)\\)") '(1 font-lock-keyword-face))) messages-mode-keywords))) - (turn-on-font-lock-if-enabled) (run-hooks 'cpp-messages-mode-hook)) (add-hook 'messages-mode-hook 'mdw-misc-mode-config t) @@ -2263,7 +2277,6 @@ strip numbers instead." (modify-syntax-entry ?\n ">" mallow-driver-mode-syntax-table) (setq comment-start "%# ") (setq comment-end "") - (turn-on-font-lock-if-enabled) (run-hooks 'mallow-driver-mode-hook)) (add-hook 'mallow-driver-hook 'mdw-misc-mode-config t) @@ -2306,7 +2319,6 @@ strip numbers instead." '("\\(\\s.\\|\\s(\\|\\s)\\|\\s\\\\|\\s/\\)" (0 mdw-punct-face)))) (setq font-lock-defaults '(nfast-debug-mode-keywords nil nil nil nil)) - (turn-on-font-lock-if-enabled) (run-hooks 'nfast-debug-mode-hook)) ;;;--------------------------------------------------------------------------