X-Git-Url: https://git.distorted.org.uk/~mdw/profile/blobdiff_plain/4a7ce1ee8ba96179c6a9043ceaecdc59a1902559..fbc946b7cb685bb47268f036e7fb4ed58ad19cbe:/el/dot-emacs.el diff --git a/el/dot-emacs.el b/el/dot-emacs.el index 37bd96a..17ca3bb 100644 --- a/el/dot-emacs.el +++ b/el/dot-emacs.el @@ -217,6 +217,19 @@ fringes is not taken out of the allowance for WIDTH, unlike (other-window 1)) (select-window win))) +(defun mdw-set-frame-width (columns &optional width) + (interactive "nColumns: +P") + (setq width (cond (width (prefix-numeric-value width)) + ((and window-system (mdw-emacs-version-p 22)) + mdw-column-width) + (t (1+ mdw-column-width)))) + (let ((sb-width (mdw-horizontal-window-overhead))) + (set-frame-width (selected-frame) + (- (* columns (+ width sb-width)) + sb-width)) + (mdw-divvy-window width))) + ;; Don't raise windows unless I say so. (defvar mdw-inhibit-raise-frame nil @@ -457,20 +470,40 @@ Evil key bindings are defined in `mdw-evil-keymap-keys'." (dolist (key replacements) (define-key keymap key binding)))))) -(eval-after-load "org-latex" - '(progn - (push '("strayman" - "\\documentclass{strayman} +(defvar mdw-org-latex-defs + '(("strayman" + "\\documentclass{strayman} \\usepackage[utf8]{inputenc} \\usepackage[palatino, helvetica, courier, maths=cmr]{mdwfonts} -\\usepackage[T1]{fontenc} \\usepackage{graphicx, tikz, mdwtab, mdwmath, crypto, longtable}" - ("\\section{%s}" . "\\section*{%s}") - ("\\subsection{%s}" . "\\subsection*{%s}") - ("\\subsubsection{%s}" . "\\subsubsection*{%s}") - ("\\paragraph{%s}" . "\\paragraph*{%s}") - ("\\subparagraph{%s}" . "\\subparagraph*{%s}")) - org-export-latex-classes))) + ("\\section{%s}" . "\\section*{%s}") + ("\\subsection{%s}" . "\\subsection*{%s}") + ("\\subsubsection{%s}" . "\\subsubsection*{%s}") + ("\\paragraph{%s}" . "\\paragraph*{%s}") + ("\\subparagraph{%s}" . "\\subparagraph*{%s}")))) + +(eval-after-load "org-latex" + '(setq org-export-latex-classes + (append mdw-org-latex-defs org-export-latex-classes))) + +(eval-after-load "ox-latex" + '(setq org-latex-classes (append mdw-org-latex-defs org-latex-classes) + org-latex-default-packages-alist '(("AUTO" "inputenc" t) + ("T1" "fontenc" t) + ("" "fixltx2e" nil) + ("" "graphicx" t) + ("" "longtable" nil) + ("" "float" nil) + ("" "wrapfig" nil) + ("" "rotating" nil) + ("normalem" "ulem" t) + ("" "textcomp" t) + ("" "marvosym" t) + ("" "wasysym" t) + ("" "amssymb" t) + ("" "hyperref" nil) + "\\tolerance=1000"))) + (setq org-export-docbook-xslt-proc-command "xsltproc --output %o %s %i" org-export-docbook-xsl-fo-proc-command "fop %i.safe %o" @@ -535,6 +568,12 @@ Pretend they don't exist. They might be on other display devices." '(progn (define-key compilation-shell-minor-mode-map "\C-c\M-g" 'recompile))) +(defadvice compile (around hack-environment compile activate) + "Hack the environment inherited by inferiors in the compilation." + (let ((process-environment process-environment)) + (setenv "LD_PRELOAD" nil) + ad-do-it)) + (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 @@ -711,7 +750,7 @@ Use this to arrange for per-server settings.") proc)) (eval-after-load "erc" - '(load "~/.ercrc.el")) + '(load "~/.ercrc.el")) ;;;-------------------------------------------------------------------------- ;;; Utility functions. @@ -901,7 +940,8 @@ If NEW-SESSION-P, start a new session." (select-window window))))) (defvar mdw-good-url-browsers - '(browse-url-mozilla + '(browse-url-chromium + browse-url-mozilla browse-url-generic (w3m . mdw-w3m-browse-url) browse-url-w3) @@ -990,10 +1030,6 @@ It in turn is a list of things: "*Standard regexp matching parts of a hanging indent. This is mainly useful in `auto-fill-mode'.") -;; Setting things up. - -(fset 'mdw-do-auto-fill (symbol-function 'do-auto-fill)) - ;; Utility functions. (defun mdw-maybe-tabify (s) @@ -1011,11 +1047,11 @@ This is mainly useful in `auto-fill-mode'.") context and return the static fill prefix to use. Point must be at the start of a line, and match data must be saved." (cond ((not l) nil) - ((looking-at (car (car l))) - (mdw-maybe-tabify (apply #'concat - (mapcar #'mdw-do-prefix-match - (cdr (car l)))))) - (t (mdw-examine-fill-prefixes (cdr l))))) + ((looking-at (car (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) "If P is a pair, return (car P), otherwise just return P." @@ -1034,26 +1070,26 @@ at the start of a line, and match data must be saved." "Expand a dynamic prefix match element. See `mdw-fill-prefix' for details." (cond ((not (consp m)) (format "%s" m)) - ((eq (car m) 'match) (match-string (mdw-maybe-car (cdr m)))) - ((eq (car m) 'pad) (mdw-padding (match-string - (mdw-maybe-car (cdr m))))) - ((eq (car m) 'eval) (eval (cdr m))) - (t ""))) + ((eq (car m) 'match) (match-string (mdw-maybe-car (cdr m)))) + ((eq (car m) 'pad) (mdw-padding (match-string + (mdw-maybe-car (cdr m))))) + ((eq (car m) 'eval) (eval (cdr m))) + (t ""))) (defun mdw-choose-dynamic-fill-prefix () "Work out the dynamic fill prefix based on the variable `mdw-fill-prefix'." (cond ((and fill-prefix (not (string= fill-prefix ""))) fill-prefix) - ((not mdw-fill-prefix) fill-prefix) - (t (save-excursion - (beginning-of-line) - (save-match-data - (mdw-examine-fill-prefixes mdw-fill-prefix)))))) + ((not mdw-fill-prefix) fill-prefix) + (t (save-excursion + (beginning-of-line) + (save-match-data + (mdw-examine-fill-prefixes mdw-fill-prefix)))))) -(defun do-auto-fill () +(defadvice do-auto-fill (around mdw-dynamic-fill-prefix () activate compile) "Handle auto-filling, working out a dynamic fill prefix in the case where there isn't a sensible static one." (let ((fill-prefix (mdw-choose-dynamic-fill-prefix))) - (mdw-do-auto-fill))) + ad-do-it)) (defun mdw-fill-paragraph () "Fill paragraph, getting a dynamic fill prefix." @@ -1067,9 +1103,9 @@ This is just a short-cut for setting the thing by hand, and by design it doesn't cope with anything approximating a complicated case." (setq mdw-fill-prefix - `((,(concat rx mdw-hanging-indents) - (match . 1) - (pad . ,(or mat 2)))))) + `((,(concat rx mdw-hanging-indents) + (match . 1) + (pad . ,(or mat 2)))))) ;;;-------------------------------------------------------------------------- ;;; Other common declarations. @@ -1529,6 +1565,18 @@ doesn't match any of the regular expressions in (mdw-define-face magit-diff-removed-highlight (((min-colors 64)) :foreground "#eecccc" :background "#663333") (((class color)) :foreground "red" :background "blue")) +(mdw-define-face magit-blame-heading + (((min-colors 64)) :foreground "white" :background "grey25" + :weight normal :slant normal) + (((class color)) :foreground "white" :background "blue" + :weight normal :slant normal)) +(mdw-define-face magit-blame-name + (t :inherit magit-blame-heading :slant italic)) +(mdw-define-face magit-blame-date + (((min-colors 64)) :inherit magit-blame-heading :foreground "grey60") + (((class color)) :inherit magit-blame-heading :foreground "cyan")) +(mdw-define-face magit-blame-summary + (t :inherit magit-blame-heading :weight bold)) (mdw-define-face dylan-header-background (((min-colors 64)) :background "NavyBlue") @@ -3347,6 +3395,9 @@ strip numbers instead." (unless modified (restore-buffer-modified-p nil))))))) +(setq LaTeX-syntactic-comments nil + LaTeX-fill-break-at-separators '(\\\[)) + ;;;-------------------------------------------------------------------------- ;;; SGML hacking. @@ -3507,6 +3558,9 @@ that character only to be normal punctuation.") (mdw-define-face eshell-ls-readonly (t nil)) (mdw-define-face eshell-ls-symlink (t :foreground "cyan")) +(defun mdw-eshell-hack () (setenv "LD_PRELOAD" nil)) +(add-hook 'eshell-mode-hook 'mdw-eshell-hack) + ;;;-------------------------------------------------------------------------- ;;; Messages-file mode. @@ -3770,6 +3824,15 @@ that character only to be normal punctuation.") (and mdw-auto-indent (indent-for-tab-command))) +(defadvice comint-line-beginning-position + (around mdw-calculate-it-properly () activate compile) + "Calculate the actual line start for multi-line input." + (if (or comint-use-prompt-regexp + (eq (field-at-pos (point)) 'output)) + ad-do-it + (setq ad-return-value + (constrain-to-field (line-beginning-position) (point))))) + (defun mdw-setup-m4 () ;; Inexplicably, Emacs doesn't match braces in m4 mode. This is very @@ -3852,6 +3915,18 @@ This allows you to pass a list of arguments through `ansi-term'." (ad-set-arg 2 (car program)) (ad-set-arg 4 (cdr program)))))) +(defadvice term-exec-1 (around hack-environment compile activate) + "Hack the environment inherited by inferiors in the terminal." + (let ((process-environment process-environment)) + (setenv "LD_PRELOAD" nil) + ad-do-it)) + +(defadvice shell (around hack-environment compile activate) + "Hack the environment inherited by inferiors in the shell." + (let ((process-environment process-environment)) + (setenv "LD_PRELOAD" nil) + ad-do-it)) + (defun ssh (host) "Open a terminal containing an ssh session to the HOST." (interactive "sHost: ") @@ -3899,6 +3974,10 @@ This allows you to pass a list of arguments through `ansi-term'." magit-revision-mode-refresh-popup)) (magit-define-popup-switch popup ?R "Reverse diff" "-R")))) +(defadvice magit-wip-commit-buffer-file + (around mdw-just-this-buffer activate compile) + (let ((magit-save-repository-buffers nil)) ad-do-it)) + (setq magit-repolist-columns '(("Name" 16 magit-repolist-column-ident nil) ("Version" 18 magit-repolist-column-version nil) @@ -3932,6 +4011,13 @@ there is sadness." (propertize (number-to-string n) 'face (if (> n 0) 'bold 'shadow)))))) +(defun mdw-try-smerge () + (save-excursion + (goto-char (point-min)) + (when (re-search-forward "^<<<<<<< " nil t) + (smerge-mode 1)))) +(add-hook 'find-file-hook 'mdw-try-smerge t) + ;;;-------------------------------------------------------------------------- ;;; MPC configuration.