X-Git-Url: https://git.distorted.org.uk/~mdw/profile/blobdiff_plain/459c9fb2fc1ea83ebc141cc8b898c4e704eafa63..cfd2cf1add56f1604e64704ed0c34253739cf473:/dot-emacs.el diff --git a/dot-emacs.el b/dot-emacs.el index 0599106..7dd4743 100644 --- a/dot-emacs.el +++ b/dot-emacs.el @@ -1,4 +1,4 @@ -;;; -*-emacs-lisp-*- +;;; -*- mode: emacs-lisp; coding: utf-8 -*- ;;; ;;; $Id$ ;;; @@ -34,7 +34,9 @@ "Execute FORMS without allowing errors to propagate outside." `(condition-case err ,(if (cdr forms) (cons 'progn forms) (car forms)) - (error (message "Error (trapped): %s" (error-message-string err))))) + (error (message "Error (trapped): %s in %s" + (error-message-string err) + ',forms)))) ;; --- Configuration reading --- @@ -79,18 +81,37 @@ path. The non-nil value is the filename we found for the library." ;; --- Splitting windows --- -(defconst mdw-scrollbar-width (if window-system 6 1) - "Guessed width of scroll bar.") +(or (and (fboundp 'scroll-bar-columns) + (fboundp 'fringe-columns)) + (progn + (defun scroll-bar-columns (side) + (cond ((eq side 'left) 0) + (window-system 3) + (t 1))) + (defun fringe-columns (side) + (cond ((not window-system) 0) + ((eq side 'left) 1) + (t 2))))) + (defun mdw-divvy-window (&optional w) "Split a wide window into appropriate widths." (interactive) - (or w (setq w 78)) - (let ((win (selected-window)) - (c (/ (+ (window-width) mdw-scrollbar-width) - (+ w mdw-scrollbar-width)))) + (or w (setq w (if (and window-system + (>= emacs-major-version 22)) + 77 + 78))) + (let* ((win (selected-window)) + (sb-width (if (not window-system) + 1 + (+ (scroll-bar-columns 'left) + (scroll-bar-columns 'right) + (fringe-columns 'left) + (fringe-columns 'right)))) + (c (/ (+ (window-width) sb-width) + (+ w sb-width)))) (while (> c 1) (setq c (1- c)) - (split-window-horizontally (+ w mdw-scrollbar-width)) + (split-window-horizontally (+ w sb-width)) (other-window 1)) (select-window win))) @@ -128,18 +149,18 @@ symbols `sunday', `monday', etc. (or a mixture). If the date stored in ;;;----- Utility functions -------------------------------------------------- -(defun line-number-at-pos (&optional pos) - "Print the current buffer line number and narrowed line number of point." - (let ((opoint (or pos (point))) start) - (save-excursion - (save-restriction - (goto-char (point-min)) - (widen) - (forward-line 0) - (setq start (point)) - (goto-char opoint) - (forward-line 0) - (1+ (count-lines 1 (point))))))) +(or (fboundp 'line-number-at-pos) + (defun line-number-at-pos (&optional pos) + (let ((opoint (or pos (point))) start) + (save-excursion + (save-restriction + (goto-char (point-min)) + (widen) + (forward-line 0) + (setq start (point)) + (goto-char opoint) + (forward-line 0) + (1+ (count-lines 1 (point)))))))) ;; --- mdw-uniquify-alist --- @@ -559,11 +580,15 @@ doesn't cope with anything approximating a complicated case." ,@(cond ((eq window-system 'w32) '(:family "courier new" :height 85)) ((eq window-system 'x) - '(:family "misc-fixed" :width semi-condensed)))) - (modeline :foreground "blue" :background "yellow" - :box (:line-width 1 :style released-button)) + '(:family "misc-fixed" :height 130 :width semi-condensed)))) + (fixed-pitch) + (minibuffer-prompt) + (mode-line :foreground "blue" :background "yellow" + :box (:line-width 1 :style released-button)) + (mode-line-inactive :foreground "yellow" :background "blue" + :box (:line-width 1 :style released-button)) (scroll-bar :foreground "black" :background "lightgrey") - (fringe :foreground "yellow" :background "grey30") + (fringe :foreground "yellow" :background "black") (show-paren-match-face :background "darkgreen") (show-paren-mismatch-face :background "red") (font-lock-warning-face :background "red" :weight bold) @@ -580,6 +605,9 @@ doesn't cope with anything approximating a complicated case." (mdw-number-face :foreground "yellow") (font-lock-function-name-face :weight bold) (font-lock-variable-name-face :slant italic) + (font-lock-comment-delimiter-face + :foreground ,(if window-system "SeaGreen1" "green") + :slant italic) (font-lock-comment-face :foreground ,(if window-system "SeaGreen1" "green") :slant italic) @@ -633,7 +661,7 @@ doesn't cope with anything approximating a complicated case." (label . 0) (case-label . +) (access-label . -) - (inclass . ++) + (inclass . +) (inline-open . ++) (statement-cont . 0) (statement-case-intro . +))) @@ -775,7 +803,6 @@ doesn't cope with anything approximating a complicated case." (setq font-lock-keywords (list - 't ;; --- Fontify include files as strings --- @@ -856,7 +883,6 @@ doesn't cope with anything approximating a complicated case." (setq font-lock-keywords (list - 't ;; --- Handle the keywords defined above --- @@ -931,7 +957,6 @@ doesn't cope with anything approximating a complicated case." (setq font-lock-keywords (list - 't ;; --- Handle the keywords defined above --- @@ -1012,7 +1037,6 @@ doesn't cope with anything approximating a complicated case." (setq font-lock-keywords (list - 't ;; --- Handle the keywords defined above --- @@ -1085,7 +1109,6 @@ doesn't cope with anything approximating a complicated case." (setq font-lock-keywords (list - 't ;; --- Handle the keywords defined above --- @@ -1144,7 +1167,6 @@ doesn't cope with anything approximating a complicated case." (setq font-lock-keywords (list - 't ;; --- Set up the keywords defined above --- @@ -1198,10 +1220,9 @@ strip numbers instead." "del" "elif" "else" "except" "exec" "finally" "for" "from" "global" "if" "import" "in" "is" "lambda" "not" "or" "pass" "print" "raise" "return" "try" - "while" "yield")))) + "with" "while" "yield")))) (setq font-lock-keywords (list - 't ;; --- Set up the keywords defined above --- @@ -1280,7 +1301,6 @@ strip numbers instead." (make-local-variable 'font-lock-keywords) (setq font-lock-keywords (list - 't ;; --- Handle numbers too --- ;; @@ -1328,7 +1348,6 @@ strip numbers instead." (make-local-variable 'font-lock-keywords) (setq font-lock-keywords (list - 't (list (concat "\\<0\\([xX][0-9a-fA-F_]+\\|[0-7_]+\\)\\|" "\\<[0-9][0-9_]*\\(\\.[0-9_]*\\|\\)" "\\([eE]\\([-+]\\|\\)[0-9_]+\\|\\)") @@ -1397,7 +1416,6 @@ strip numbers instead." (setq font-lock-keywords (list - 't ;; --- Set up the keywords defined above --- @@ -1450,7 +1468,6 @@ strip numbers instead." (setq font-lock-keywords (list - 't ;; --- Set up the keywords defined above --- @@ -1501,7 +1518,6 @@ strip numbers instead." (setq font-lock-keywords (list - 't (list "--.*$" '(0 font-lock-comment-face)) (list (concat "\\<\\(" haskell-keywords "\\)\\>") @@ -1526,7 +1542,6 @@ strip numbers instead." (make-local-variable 'font-lock-keywords) (setq font-lock-keywords (list - 't ;; --- Environment names are keywords --- @@ -1574,7 +1589,6 @@ strip numbers instead." (make-local-variable 'font-lock-keywords) (setq font-lock-keywords (list - 't ;; --- Environment names are keywords --- @@ -1632,6 +1646,26 @@ strip numbers instead." (list "[$^_{}#&]" '(0 mdw-punct-face))))) +;;;----- SGML hacking ------------------------------------------------------- + +(defun mdw-sgml-mode () + (interactive) + (sgml-mode) + (mdw-standard-fill-prefix "") + (make-variable-buffer-local 'sgml-delimiters) + (setq sgml-delimiters + '("AND" "&" "COM" "--" "CRO" "&#" "DSC" "]" "DSO" "[" "DTGC" "]" + "DTGO" "[" "ERO" "&" "ETAGO" ":e" "GRPC" ")" "GRPO" "(" "LIT" "\"" + "LITA" "'" "MDC" ">" "MDO" "" "PIO" "" + "XML-ECOM" "-->" "XML-PIC" "?>" "XML-SCOM" "