(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
'(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
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."
"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 ()
"Handle auto-filling, working out a dynamic fill prefix in the
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.
(and mdw-auto-indent
(cond ((eq major-mode 'lisp-mode)
(local-set-key "\C-m" 'mdw-indent-newline-and-indent))
- ((or (eq major-mode 'slime-repl-mode)
- (eq major-mode 'asm-mode))
+ ((derived-mode-p 'slime-repl-mode 'asm-mode 'comint-mode)
nil)
(t
(local-set-key "\C-m" 'newline-and-indent))))
(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")
(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.
(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
(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: ")
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)
(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.