X-Git-Url: https://git.distorted.org.uk/~mdw/profile/blobdiff_plain/6d6f2b519e037c3cfd417638f7acbde14d5ccc38..4ccc2909ffaafdf1306bce24bc4229dae17e40d0:/el/dot-emacs.el diff --git a/el/dot-emacs.el b/el/dot-emacs.el index 6b19dab..2fdc9ab 100644 --- a/el/dot-emacs.el +++ b/el/dot-emacs.el @@ -293,6 +293,56 @@ it's currently off." (or transient-mark-mode (setq transient-mark-mode 'only)) (set-mark (mark t))))) +;; Improved compilation machinery. + +(setq compile-command + (let ((ncpu (with-temp-buffer + (insert-file-contents "/proc/cpuinfo") + (buffer-string) + (count-matches "^processor\\s-*:")))) + (format "make -j%d -k" (* 2 ncpu)))) + +(defun mdw-compilation-buffer-name (mode) + (concat "*" (downcase mode) ": " + (abbreviate-file-name default-directory) "*")) +(setq compilation-buffer-name-function 'mdw-compilation-buffer-name) + +(eval-after-load "compile" + '(progn + (define-key compilation-shell-minor-mode-map "\C-c\M-g" 'recompile))) + +(defun mdw-compile (command &optional directory comint) + "Initiate a compilation COMMAND, maybe in a different DIRECTORY. +The DIRECTORY may be nil to not change. If COMINT is t, then +start an interactive compilation. + +Interactively, prompt for the command if the variable +`compilation-read-command' is non-nil, or if requested through +the prefix argument. Prompt for the directory, and run +interactively, if requested through the prefix. + +Use a prefix of 4, 6, 12, or 14, or type C-u between one and three times, to +force prompting for a directory. + +Use a prefix of 2, 6, 10, or 14, or type C-u three times, to force +prompting for the command. + +Use a prefix of 8, 10, 12, or 14, or type C-u twice or three times, +to force interactive compilation." + (interactive + (let* ((prefix (prefix-numeric-value current-prefix-arg)) + (command (eval compile-command)) + (dir (and (plusp (logand prefix #x54)) + (read-directory-name "Compile in directory: ")))) + (list (if (or compilation-read-command + (plusp (logand prefix #x42))) + (compilation-read-command command) + command) + dir + (plusp (logand prefix #x58))))) + (let ((default-directory (or directory default-directory))) + (compile command comint))) + ;; Functions for sexp diary entries. (defun mdw-not-org-mode (form) @@ -1082,62 +1132,6 @@ doesn't match any of the regular expressions in (add-hook 'delete-frame-functions 'mdw-last-one-out-turn-off-the-lights) ;;;-------------------------------------------------------------------------- -;;; Where is point? - -(defvar mdw-point-overlay - (let ((ov (make-overlay 0 0)) - (s ".")) - (overlay-put ov 'priority 2) - (put-text-property 0 1 'display '(left-fringe vertical-bar) s) - (overlay-put ov 'before-string s) - (delete-overlay ov) - ov) - "An overlay used for showing where point is in the selected window.") - -(defun mdw-remove-point-overlay () - "Remove the current-point overlay." - (delete-overlay mdw-point-overlay)) - -(defun mdw-update-point-overlay () - "Mark the current point position with an overlay." - (if (not mdw-point-overlay-mode) - (mdw-remove-point-overlay) - (overlay-put mdw-point-overlay 'window (selected-window)) - (if (bolp) - (move-overlay mdw-point-overlay - (point) (1+ (point)) (current-buffer)) - (move-overlay mdw-point-overlay - (1- (point)) (point) (current-buffer))))) - -(defvar mdw-point-overlay-buffers nil - "List of buffers using `mdw-point-overlay-mode'.") - -(define-minor-mode mdw-point-overlay-mode - "Indicate current line with an overlay." - :global nil - (let ((buffer (current-buffer))) - (setq mdw-point-overlay-buffers - (mapcan (lambda (buf) - (if (and (buffer-live-p buf) - (not (eq buf buffer))) - (list buf))) - mdw-point-overlay-buffers)) - (if mdw-point-overlay-mode - (setq mdw-point-overlay-buffers - (cons buffer mdw-point-overlay-buffers)))) - (cond (mdw-point-overlay-buffers - (add-hook 'pre-command-hook 'mdw-remove-point-overlay) - (add-hook 'post-command-hook 'mdw-update-point-overlay)) - (t - (mdw-remove-point-overlay) - (remove-hook 'pre-command-hook 'mdw-remove-point-overlay) - (remove-hook 'post-command-hook 'mdw-update-point-overlay)))) - -(define-globalized-minor-mode mdw-global-point-overlay-mode - mdw-point-overlay-mode - (lambda () (if (not (minibufferp)) (mdw-point-overlay-mode t)))) - -;;;-------------------------------------------------------------------------- ;;; Fullscreen-ness. (defvar mdw-full-screen-parameters @@ -1202,16 +1196,15 @@ doesn't match any of the regular expressions in (mdw-define-face variable-pitch (((type x)) :family "helvetica" :height 90))) (mdw-define-face region - (((type tty) (class color)) :background "blue") - (((type tty) (class mono)) :inverse-video t) - (t :background "grey30")) + (((min-colors 64)) :background "grey30") + (((class color)) :background "blue") + ((t) :inverse-video t)) (mdw-define-face match - (((type tty) (class color)) :background "blue") - (((type tty) (class mono)) :inverse-video t) - (t :background "blue")) + (((class color)) :background "blue") + (t :inverse-video t)) (mdw-define-face mc/cursor-face - (((type tty) (class mono)) :inverse-video t) - (t :background "red")) + (((class color)) :background "red") + (t :inverse-video t)) (mdw-define-face minibuffer-prompt (t :weight bold)) (mdw-define-face mode-line @@ -1236,8 +1229,8 @@ doesn't match any of the regular expressions in (((class color)) :background "red") (t :inverse-video t)) (mdw-define-face highlight - (((type x) (class color)) :background "DarkSeaGreen4") - (((type tty) (class color)) :background "cyan") + (((min-colors 64)) :background "DarkSeaGreen4") + (((class color)) :background "cyan") (t :inverse-video t)) (mdw-define-face holiday-face @@ -1267,7 +1260,8 @@ doesn't match any of the regular expressions in (((class color)) :background "darkred") (t :inverse-video t)) (mdw-define-face mdw-punct-face - (((type tty)) :foreground "yellow") (t :foreground "burlywood2")) + (((min-colors 64)) :foreground "burlywood2") + (((class color)) :foreground "yellow")) (mdw-define-face mdw-number-face (t :foreground "yellow")) (mdw-define-face mdw-trivial-face) @@ -1286,78 +1280,102 @@ doesn't match any of the regular expressions in (mdw-define-face font-lock-variable-name-face (t :slant italic)) (mdw-define-face font-lock-comment-delimiter-face - (((class mono)) :weight bold) - (((type tty) (class color)) :foreground "green") - (t :slant italic :foreground "SeaGreen1")) + (((min-colors 64)) :slant italic :foreground "SeaGreen1") + (((class color)) :foreground "green") + (t :weight bold)) (mdw-define-face font-lock-comment-face - (((class mono)) :weight bold) - (((type tty) (class color)) :foreground "green") - (t :slant italic :foreground "SeaGreen1")) + (((min-colors 64)) :slant italic :foreground "SeaGreen1") + (((class color)) :foreground "green") + (t :weight bold)) (mdw-define-face font-lock-string-face - (((class mono)) :weight bold) - (((class color)) :foreground "SkyBlue1")) + (((min-colors 64)) :foreground "SkyBlue1") + (((class color)) :foreground "cyan") + (t :weight bold)) (mdw-define-face message-separator (t :background "red" :foreground "white" :weight bold)) (mdw-define-face message-cited-text (default :slant italic) - (((type tty)) :foreground "cyan") (t :foreground "SkyBlue1")) + (((min-colors 64)) :foreground "SkyBlue1") + (((class color)) :foreground "cyan")) (mdw-define-face message-header-cc (default :slant italic) - (((type tty)) :foreground "green") (t :foreground "SeaGreen1")) + (((min-colors 64)) :foreground "SeaGreen1") + (((class color)) :foreground "green")) (mdw-define-face message-header-newsgroups (default :slant italic) - (((type tty)) :foreground "green") (t :foreground "SeaGreen1")) + (((min-colors 64)) :foreground "SeaGreen1") + (((class color)) :foreground "green")) (mdw-define-face message-header-subject - (((type tty)) :foreground "green") (t :foreground "SeaGreen1")) + (((min-colors 64)) :foreground "SeaGreen1") + (((class color)) :foreground "green")) (mdw-define-face message-header-to - (((type tty)) :foreground "green") (t :foreground "SeaGreen1")) + (((min-colors 64)) :foreground "SeaGreen1") + (((class color)) :foreground "green")) (mdw-define-face message-header-xheader (default :slant italic) - (((type tty)) :foreground "green") (t :foreground "SeaGreen1")) + (((min-colors 64)) :foreground "SeaGreen1") + (((class color)) :foreground "green")) (mdw-define-face message-header-other (default :slant italic) - (((type tty)) :foreground "green") (t :foreground "SeaGreen1")) + (((min-colors 64)) :foreground "SeaGreen1") + (((class color)) :foreground "green")) (mdw-define-face message-header-name (default :weight bold) - (((type tty)) :foreground "green") (t :foreground "SeaGreen1")) + (((min-colors 64)) :foreground "SeaGreen1") + (((class color)) :foreground "green")) (mdw-define-face which-func (t nil)) (mdw-define-face gnus-header-name (default :weight bold) - (((type tty)) :foreground "green") (t :foreground "SeaGreen1")) + (((min-colors 64)) :foreground "SeaGreen1") + (((class color)) :foreground "green")) (mdw-define-face gnus-header-subject - (((type tty)) :foreground "green") (t :foreground "SeaGreen1")) + (((min-colors 64)) :foreground "SeaGreen1") + (((class color)) :foreground "green")) (mdw-define-face gnus-header-from - (((type tty)) :foreground "green") (t :foreground "SeaGreen1")) + (((min-colors 64)) :foreground "SeaGreen1") + (((class color)) :foreground "green")) (mdw-define-face gnus-header-to - (((type tty)) :foreground "green") (t :foreground "SeaGreen1")) + (((min-colors 64)) :foreground "SeaGreen1") + (((class color)) :foreground "green")) (mdw-define-face gnus-header-content (default :slant italic) - (((type tty)) :foreground "green") (t :foreground "SeaGreen1")) + (((min-colors 64)) :foreground "SeaGreen1") + (((class color)) :foreground "green")) (mdw-define-face gnus-cite-1 - (((type tty)) :foreground "cyan") (t :foreground "SkyBlue1")) + (((min-colors 64)) :foreground "SkyBlue1") + (((class color)) :foreground "cyan")) (mdw-define-face gnus-cite-2 - (((type tty)) :foreground "blue") (t :foreground "RoyalBlue2")) + (((min-colors 64)) :foreground "RoyalBlue2") + (((class color)) :foreground "blue")) (mdw-define-face gnus-cite-3 - (((type tty)) :foreground "magenta") (t :foreground "MediumOrchid")) + (((min-colors 64)) :foreground "MediumOrchid") + (((class color)) :foreground "magenta")) (mdw-define-face gnus-cite-4 - (((type tty)) :foreground "red") (t :foreground "firebrick2")) + (((min-colors 64)) :foreground "firebrick2") + (((class color)) :foreground "red")) (mdw-define-face gnus-cite-5 - (((type tty)) :foreground "yellow") (t :foreground "burlywood2")) + (((min-colors 64)) :foreground "burlywood2") + (((class color)) :foreground "yellow")) (mdw-define-face gnus-cite-6 - (((type tty)) :foreground "green") (t :foreground "SeaGreen1")) + (((min-colors 64)) :foreground "SeaGreen1") + (((class color)) :foreground "green")) (mdw-define-face gnus-cite-7 - (((type tty)) :foreground "cyan") (t :foreground "SlateBlue1")) + (((min-colors 64)) :foreground "SlateBlue1") + (((class color)) :foreground "cyan")) (mdw-define-face gnus-cite-8 - (((type tty)) :foreground "blue") (t :foreground "RoyalBlue2")) + (((min-colors 64)) :foreground "RoyalBlue2") + (((class color)) :foreground "blue")) (mdw-define-face gnus-cite-9 - (((type tty)) :foreground "magenta") (t :foreground "purple2")) + (((min-colors 64)) :foreground "purple2") + (((class color)) :foreground "magenta")) (mdw-define-face gnus-cite-10 - (((type tty)) :foreground "red") (t :foreground "DarkOrange2")) + (((min-colors 64)) :foreground "DarkOrange2") + (((class color)) :foreground "red")) (mdw-define-face gnus-cite-11 (t :foreground "grey")) @@ -1368,98 +1386,101 @@ doesn't match any of the regular expressions in (mdw-define-face diff-file-header (t :weight bold)) (mdw-define-face diff-hunk-header - (t :foreground "SkyBlue1")) + (((min-colors 64)) :foreground "SkyBlue1") + (((class color)) :foreground "cyan")) (mdw-define-face diff-function - (t :foreground "SkyBlue1" :weight bold)) + (default :weight bold) + (((min-colors 64)) :foreground "SkyBlue1") + (((class color)) :foreground "cyan")) (mdw-define-face diff-header - (t :background "grey10")) + (((min-colors 64)) :background "grey10")) (mdw-define-face diff-added - (t :foreground "green")) + (((class color)) :foreground "green")) (mdw-define-face diff-removed - (t :foreground "red")) + (((class color)) :foreground "red")) (mdw-define-face diff-context (t nil)) (mdw-define-face diff-refine-change - (((class color) (type x)) :background "RoyalBlue4") + (((min-colors 64)) :background "RoyalBlue4") (t :underline t)) (mdw-define-face diff-refine-removed - (((class color) (type x)) :background "#500") + (((min-colors 64)) :background "#500") (t :underline t)) (mdw-define-face diff-refine-added - (((class color) (type x)) :background "#050") + (((min-colors 64)) :background "#050") (t :underline t)) (setq ediff-force-faces t) (mdw-define-face ediff-current-diff-A - (((class color) (type x)) :background "darkred") - (((class color) (type tty)) :background "red") + (((min-colors 64)) :background "darkred") + (((class color)) :background "red") (t :inverse-video t)) (mdw-define-face ediff-fine-diff-A - (((class color) (type x)) :background "red3") - (((class color) (type tty)) :inverse-video t) + (((min-colors 64)) :background "red3") + (((class color)) :inverse-video t) (t :inverse-video nil)) (mdw-define-face ediff-even-diff-A - (((class color) (type x)) :background "#300")) + (((min-colors 64)) :background "#300")) (mdw-define-face ediff-odd-diff-A - (((class color) (type x)) :background "#300")) + (((min-colors 64)) :background "#300")) (mdw-define-face ediff-current-diff-B - (((class color) (type x)) :background "darkgreen") - (((class color) (type tty)) :background "magenta") + (((min-colors 64)) :background "darkgreen") + (((class color)) :background "magenta") (t :inverse-video t)) (mdw-define-face ediff-fine-diff-B - (((class color) (type x)) :background "green4") - (((class color) (type tty)) :inverse-video t) + (((min-colors 64)) :background "green4") + (((class color)) :inverse-video t) (t :inverse-video nil)) (mdw-define-face ediff-even-diff-B - (((class color) (type x)) :background "#020")) + (((min-colors 64)) :background "#020")) (mdw-define-face ediff-odd-diff-B - (((class color) (type x)) :background "#020")) + (((min-colors 64)) :background "#020")) (mdw-define-face ediff-current-diff-C - (((class color) (type x)) :background "darkblue") - (((class color) (type tty)) :background "blue") + (((min-colors 64)) :background "darkblue") + (((class color)) :background "blue") (t :inverse-video t)) (mdw-define-face ediff-fine-diff-C - (((class color) (type x)) :background "blue1") - (((class color) (type tty)) :inverse-video t) + (((min-colors 64)) :background "blue1") + (((class color)) :inverse-video t) (t :inverse-video nil)) (mdw-define-face ediff-even-diff-C - (((class color) (type x)) :background "#004")) + (((min-colors 64)) :background "#004")) (mdw-define-face ediff-odd-diff-C - (((class color) (type x)) :background "#004")) + (((min-colors 64)) :background "#004")) (mdw-define-face ediff-current-diff-Ancestor - (((class color) (type x)) :background "#630") - (((class color) (type tty)) :background "blue") + (((min-colors 64)) :background "#630") + (((class color)) :background "blue") (t :inverse-video t)) (mdw-define-face ediff-even-diff-Ancestor - (((class color) (type x)) :background "#320")) + (((min-colors 64)) :background "#320")) (mdw-define-face ediff-odd-diff-Ancestor - (((class color) (type x)) :background "#320")) + (((min-colors 64)) :background "#320")) (mdw-define-face magit-hash - (((class color) (type x)) :foreground "grey40") - (((class color) (type tty)) :foreground "blue")) + (((min-colors 64)) :foreground "grey40") + (((class color)) :foreground "blue")) (mdw-define-face magit-diff-hunk-heading - (((class color) (type x)) :foreground "grey70" :background "grey25") - (((class color) (type tty)) :foreground "yellow")) + (((min-colors 64)) :foreground "grey70" :background "grey25") + (((class color)) :foreground "yellow")) (mdw-define-face magit-diff-hunk-heading-highlight - (((class color) (type x)) :foreground "grey70" :background "grey35") - (((class color) (type tty)) :foreground "yellow" :background "blue")) + (((min-colors 64)) :foreground "grey70" :background "grey35") + (((class color)) :foreground "yellow" :background "blue")) (mdw-define-face magit-diff-added - (((class color) (type x)) :foreground "#ddffdd" :background "#335533") - (((class color) (type tty)) :foreground "green")) + (((min-colors 64)) :foreground "#ddffdd" :background "#335533") + (((class color)) :foreground "green")) (mdw-define-face magit-diff-added-highlight - (((class color) (type x)) :foreground "#cceecc" :background "#336633") - (((class color) (type tty)) :foreground "green" :background "blue")) + (((min-colors 64)) :foreground "#cceecc" :background "#336633") + (((class color)) :foreground "green" :background "blue")) (mdw-define-face magit-diff-removed - (((class color) (type x)) :foreground "#ffdddd" :background "#553333") - (((class color) (type tty)) :foreground "red")) + (((min-colors 64)) :foreground "#ffdddd" :background "#553333") + (((class color)) :foreground "red")) (mdw-define-face magit-diff-removed-highlight - (((class color) (type x)) :foreground "#eecccc" :background "#663333") - (((class color) (type tty)) :foreground "red" :background "blue")) + (((min-colors 64)) :foreground "#eecccc" :background "#663333") + (((class color)) :foreground "red" :background "blue")) (mdw-define-face dylan-header-background - (((class color) (type x)) :background "NavyBlue") - (t :background "blue")) + (((min-colors 64)) :background "NavyBlue") + (((class color)) :background "blue")) (mdw-define-face erc-input-face (t :foreground "red")) @@ -1527,6 +1548,84 @@ doesn't match any of the regular expressions in (set-display-table-slot standard-display-table 5 bar)) ;;;-------------------------------------------------------------------------- +;;; Where is point? + +(mdw-define-face mdw-point-overlay + (((type graphic))) + (((min-colors 64)) :background "darkblue") + (((class color)) :background "blue") + (((type tty) (class mono)) :inverse-video t)) + +(defvar mdw-point-overlay-fringe-display '(vertical-bar . vertical-bar)) + +(defun mdw-configure-point-overlay () + (let ((ov (make-overlay 0 0))) + (overlay-put ov 'priority 0) + (let* ((fringe (or mdw-point-overlay-fringe-display (cons nil nil))) + (left (car fringe)) (right (cdr fringe)) + (s "")) + (when left + (let ((ss ".")) + (put-text-property 0 1 'display `(left-fringe ,left) ss) + (setq s (concat s ss)))) + (when right + (let ((ss ".")) + (put-text-property 0 1 'display `(right-fringe ,right) ss) + (setq s (concat s ss)))) + (when (or left right) + (overlay-put ov 'before-string s))) + (overlay-put ov 'face 'mdw-point-overlay) + (delete-overlay ov) + ov)) + +(defvar mdw-point-overlay (mdw-configure-point-overlay) + "An overlay used for showing where point is in the selected window.") +(defun mdw-reconfigure-point-overlay () + (interactive) + (setq mdw-point-overlay (mdw-configure-point-overlay))) + +(defun mdw-remove-point-overlay () + "Remove the current-point overlay." + (delete-overlay mdw-point-overlay)) + +(defun mdw-update-point-overlay () + "Mark the current point position with an overlay." + (if (not mdw-point-overlay-mode) + (mdw-remove-point-overlay) + (overlay-put mdw-point-overlay 'window (selected-window)) + (move-overlay mdw-point-overlay + (line-beginning-position) + (+ (line-end-position) 1)))) + +(defvar mdw-point-overlay-buffers nil + "List of buffers using `mdw-point-overlay-mode'.") + +(define-minor-mode mdw-point-overlay-mode + "Indicate current line with an overlay." + :global nil + (let ((buffer (current-buffer))) + (setq mdw-point-overlay-buffers + (mapcan (lambda (buf) + (if (and (buffer-live-p buf) + (not (eq buf buffer))) + (list buf))) + mdw-point-overlay-buffers)) + (if mdw-point-overlay-mode + (setq mdw-point-overlay-buffers + (cons buffer mdw-point-overlay-buffers)))) + (cond (mdw-point-overlay-buffers + (add-hook 'pre-command-hook 'mdw-remove-point-overlay) + (add-hook 'post-command-hook 'mdw-update-point-overlay)) + (t + (mdw-remove-point-overlay) + (remove-hook 'pre-command-hook 'mdw-remove-point-overlay) + (remove-hook 'post-command-hook 'mdw-update-point-overlay)))) + +(define-globalized-minor-mode mdw-global-point-overlay-mode + mdw-point-overlay-mode + (lambda () (if (not (minibufferp)) (mdw-point-overlay-mode t)))) + +;;;-------------------------------------------------------------------------- ;;; C programming configuration. ;; Make C indentation nice. @@ -1839,6 +1938,10 @@ name, as a symbol." (list "\\(\\s.\\|\\s(\\|\\s)\\|\\s\\\\|\\s/\\)" '(0 mdw-punct-face)))))) +(define-derived-mode sod-mode c-mode "Sod" + "Major mode for editing Sod code.") +(push '("\\.sod$" . sod-mode) auto-mode-alist) + ;;;-------------------------------------------------------------------------- ;;; AP calc mode. @@ -2377,13 +2480,13 @@ name, as a symbol." (list ;; Handle the keywords defined above. - (list (concat "\\<\\(" rust-keywords "\\)\\>") + (list (concat "\\_<\\(" rust-keywords "\\)\\_>") '(0 font-lock-keyword-face)) - (list (concat "\\<\\(" rust-builtins "\\)\\>") + (list (concat "\\_<\\(" rust-builtins "\\)\\_>") '(0 font-lock-variable-name-face)) ;; Handle numbers too. - (list (concat "\\<\\(" + (list (concat "\\_<\\(" "[0-9][0-9_]*" "\\(" "\\(\\.[0-9_]+\\)?[eE][-+]?[0-9_]+" "\\|" "\\.[0-9_]+" @@ -2395,7 +2498,7 @@ name, as a symbol." "\\|" "0b[01_]+" "\\)" "\\([ui]\\(8\\|16\\|32\\|64\\|s\\|size\\)\\)?" - "\\)\\>") + "\\)\\_>") '(0 mdw-number-face)) ;; And anything else is punctuation. @@ -2580,12 +2683,20 @@ strip numbers instead." (defun mdw-fontify-pyrex () (mdw-fontify-pythonic (mdw-regexps "and" "as" "assert" "break" "cdef" "class" "continue" - "ctypedef" "def" "del" "elif" "else" "except" "exec" + "ctypedef" "def" "del" "elif" "else" "enum" "except" "exec" "extern" "finally" "for" "from" "global" "if" "import" "in" "is" "lambda" "not" "or" "pass" "print" - "raise" "return" "struct" "try" "while" "with" + "property" "raise" "return" "struct" "try" "while" "with" "yield"))) +(define-derived-mode pyrex-mode python-mode "Pyrex" + "Major mode for editing Pyrex source code") +(setq auto-mode-alist + (append '(("\\.pyx$" . pyrex-mode) + ("\\.pxd$" . pyrex-mode) + ("\\.pxi$" . pyrex-mode)) + auto-mode-alist)) + ;;;-------------------------------------------------------------------------- ;;; Lua programming style. @@ -3108,7 +3219,7 @@ strip numbers instead." (local-set-key [?$] 'self-insert-command) ;; Make `tab' be useful, given that tab stops in TeX don't work well. - (local-set-key "\C-i" 'indent-relative) + (local-set-key "\C-\M-i" 'indent-relative) (setq indent-tabs-mode nil) ;; Set fill prefix. @@ -3627,6 +3738,9 @@ that character only to be normal punctuation.") "\\([ \t]*\\([>#|:] ?\\)*[ \t]*\\)" 3) (auto-fill-mode 1)) +(eval-after-load "flyspell" + '(define-key flyspell-mode-map "\C-\M-i" nil)) + ;;;-------------------------------------------------------------------------- ;;; Outline and hide/show modes. @@ -3769,6 +3883,8 @@ there is sadness." ;;;-------------------------------------------------------------------------- ;;; MPC configuration. +(eval-when-compile (trap (require 'mpc))) + (setq mpc-browser-tags '(Artist|Composer|Performer Album|Playlist)) (defun mdw-mpc-now-playing () @@ -3829,6 +3945,18 @@ there is sadness." (mdw-define-mpc-wrapper mdw-mpc-prev () nil (mpc-prev)) (mdw-define-mpc-wrapper mdw-mpc-stop () nil (mpc-stop)) +(defun mdw-mpc-louder (step) + (interactive (list (if current-prefix-arg + (prefix-numeric-value current-prefix-arg) + +10))) + (mpc-proc-cmd (format "volume %+d" step))) + +(defun mdw-mpc-quieter (step) + (interactive (list (if current-prefix-arg + (prefix-numeric-value current-prefix-arg) + +10))) + (mpc-proc-cmd (format "volume %+d" (- step)))) + (defun mdw-mpc-hack-lines (arg interactivep func) (if (and interactivep (use-region-p)) (let ((from (region-beginning)) (to (region-end)))