X-Git-Url: https://git.distorted.org.uk/~mdw/profile/blobdiff_plain/580ac7ce11353166bdfa83283e6b51f282135dfe..c7203018088c17c7c5516f62b508f04680c63ca2:/el/dot-emacs.el diff --git a/el/dot-emacs.el b/el/dot-emacs.el index a2989fe..950f2db 100644 --- a/el/dot-emacs.el +++ b/el/dot-emacs.el @@ -102,6 +102,15 @@ This may be at the expense of cool features.") (concat "(" (buffer-string) ")"))))))) (cdr (assq sym mdw-config))) +;; Width configuration. + +(defvar mdw-column-width + (string-to-number (or (mdw-config 'emacs-width) "77")) + "Width of Emacs columns.") +(defvar mdw-text-width mdw-column-width + "Expected width of text within columns.") +(put 'mdw-text-width 'safe-local-variable 'integerp) + ;; Local variables hacking. (defun run-local-vars-mode-hook () @@ -196,8 +205,8 @@ fringes is not taken out of the allowance for WIDTH, unlike (interactive "P") (setq width (cond (width (prefix-numeric-value width)) ((and window-system (mdw-emacs-version-p 22)) - 77) - (t 78))) + mdw-column-width) + (t (1+ mdw-column-width)))) (let* ((win (selected-window)) (sb-width (mdw-horizontal-window-overhead)) (c (/ (+ (window-width) sb-width) @@ -370,27 +379,45 @@ as output rather than a string." (let ((mdw-diary-for-org-mode-p t)) ad-do-it)) -(defadvice diary-add-to-list (before mdw-trim-leading-space activate) +(defadvice diary-add-to-list (before mdw-trim-leading-space compile activate) "Trim leading space from the diary entry string." (save-match-data - (let ((str (ad-get-arg 1))) - (ad-set-arg 1 - (cond ((null str) nil) + (let ((str (ad-get-arg 1)) + (done nil) old) + (while (not done) + (setq old str) + (setq str (cond ((null str) nil) + ((string-match "\\(^\\|\n\\)[ \t]+" str) + (replace-match "\\1" nil nil str)) ((and mdw-diary-for-org-mode-p (string-match (concat - "^[ \t]*" + "\\(^\\|\n\\)" "\\(" diary-time-regexp "\\(-" diary-time-regexp "\\)?" - "\\)[ \t]+") + "\\)" + "\\(\t[ \t]*\\| [ \t]+\\)") str)) - (replace-match "\\1 " nil nil str)) - ((string-match "^[ \t]+" str) - (replace-match "" nil nil str)) + (replace-match "\\1\\2 " nil nil str)) ((and (not mdw-diary-for-org-mode-p) (string-match "\\[\\[[^][]*]\\[\\([^][]*\\)]]" str)) (replace-match "\\1" nil nil str)) - (t str)))))) + (t str))) + (if (equal str old) (setq done t))) + (ad-set-arg 1 str)))) + +(defadvice org-bbdb-anniversaries (after mdw-fixup-list compile activate) + "Return a string rather than a list." + (with-temp-buffer + (let ((anyp nil)) + (dolist (e (let ((ee ad-return-value)) + (if (atom ee) (list ee) ee))) + (when e + (when anyp (insert ?\n)) + (insert e) + (setq anyp t))) + (setq ad-return-value + (and anyp (buffer-string)))))) ;; Fighting with Org-mode's evil key maps. @@ -963,7 +990,7 @@ case." (setq page-delimiter "\f\\|^.*-\\{6\\}.*$") (setq comment-column 40) (auto-fill-mode 1) - (setq fill-column 77) + (setq fill-column mdw-text-width) (and (fboundp 'gtags-mode) (gtags-mode)) (if (fboundp 'hs-minor-mode) @@ -973,6 +1000,7 @@ case." (trap (turn-on-font-lock))) (defun mdw-post-local-vars-misc-mode-config () + (setq whitespace-line-column mdw-text-width) (when (and mdw-do-misc-mode-hacking (not buffer-read-only)) (setq show-trailing-whitespace t) @@ -1219,6 +1247,9 @@ doesn't match any of the regular expressions in (mdw-define-face trailing-whitespace (((class color)) :background "red") (t :inverse-video t)) +(mdw-define-face whitespace-line + (((class color)) :background "darkred") + (t :inverse-video :t)) (mdw-define-face mdw-punct-face (((type tty)) :foreground "yellow") (t :foreground "burlywood2")) (mdw-define-face mdw-number-face @@ -1335,6 +1366,12 @@ doesn't match any of the regular expressions in (mdw-define-face diff-refine-change (((class color) (type x)) :background "RoyalBlue4") (t :underline t)) +(mdw-define-face diff-refine-removed + (((class color) (type x)) :background "#500") + (t :underline t)) +(mdw-define-face diff-refine-added + (((class color) (type x)) :background "#050") + (t :underline t)) (mdw-define-face dylan-header-background (((class color) (type x)) :background "NavyBlue")