(and (library-exists-p "vc-git")
(not (memq 'GIT vc-handled-backends))
+ (not (memq 'Git vc-handled-backends))
(setq vc-handled-backends (cons 'GIT vc-handled-backends)))
- (and (library-exists-p "quilt")
- (not mdw-fast-startup)
- (load "quilt"))
(trap (or mdw-fast-startup (require 'p4)))
;; Emacs server behaviour.
(and (or window-system (>= emacs-major-version 23))
- (trap (setq server-temp-file-regexp (concat "^" tmpdir "\\|/draft$"))
- (server-start)
- (gnuserv-start)))
+ (progn (setq server-temp-file-regexp (concat "^" tmpdir "\\|/draft$")
+ gnuserv-frame t)
+ (trap (server-start))))
;; Control backup behaviour.
(scroll-bar-width . 15)
(cursor-color . "red"))
(if mdw-black-background
- '((background-color . "black")
- (foreground-color . "white")
- (background-mode . dark))
+ '((background-mode . dark))
'((background-mode . light)))
(and (eq window-system 'pm)
'((font . "-os2-System VIO-medium-r-normal--*-40-*-*-m-*-cp850")
(menu-font . "8.Helv")
(background-color . "lightgrey")))
- '((transparency . t))
default-frame-alist))
;; Other frame fiddling.
("\\.m$" . objc-mode)
("\\.mxd$" . c-mode)
("\\.cs$" . csharp-mode)
+ ("\\.go$" . go-mode)
("\\.org$" . org-mode)
;; ("/[ch]/" . c-mode)
(,(concat "/\\("
'(c-mode-hook c++-mode-hook objc-mode-hook java-mode-hook
csharp-mode-hook perl-mode-hook cperl-mode-hook
python-mode-hook pyrec-mode-hook icon-mode-hook awk-mode-hook
- tcl-mode-hook
+ tcl-mode-hook go-mode-hook
asm-mode-hook TeX-mode-hook LaTeX-mode-hook
TeXinfo-mode-hook tex-mode-hook latex-mode-hook
texinfo-mode-hook emacs-lisp-mode-hook scheme-mode-hook
(tramp-copy-program nil)
(tramp-copy-args nil)
(tramp-copy-keep-date-arg nil)
- (tramp-login-args ("TERM=dumb" "%u")))
+ (tramp-login-args (("TERM=dumb" "%u"))))
("really"
(tramp-connection-function tramp-open-connection-su)
(tramp-login-program "really")
- (tramp-login-args ("-u" "%u" "--"
- "env" "TERM=dumb" "/bin/sh"))
+ (tramp-login-args (("-u" "%u")
+ ("--")
+ ("env" "TERM=dumb" "/bin/sh")))
(tramp-copy-program nil)
(tramp-copy-args nil)
(tramp-copy-keep-date-arg nil)
(add-hook 'c++-mode-hook 'mdw-fontify-c-and-c++ t)
(add-hook 'linux-c-mode-hook #'(lambda () (setq c-basic-offset 8)))
(add-hook 'asm-mode-hook 'mdw-fontify-asm t)
+ (add-hook 'go-mode-hook 'mdw-fontify-go t)
(add-hook 'icon-mode-hook 'mdw-fontify-icon t)
(setq answer func)))
answer))
+(eval-after-load "w3m-search"
+ '(progn
+ (dolist
+ (item
+ '(("g" "Google" "http://www.google.co.uk/search?q=%s")
+ ("gd" "Google Directory"
+ "http://www.google.com/search?cat=gwd/Top&q=%s")
+ ("gg" "Google Groups" "http://groups.google.com/groups?q=%s")
+ ("ward" "Ward's wiki" "http://c2.com/cgi/wiki?%s")
+ ("gi" "Images" "http://images.google.com/images?q=%s")
+ ("rfc" "RFC"
+ "http://metalzone.distorted.org.uk/ftp/pub/mirrors/rfc/rfc%s.txt.gz")
+ ("wp" "Wikipedia"
+ "http://en.wikipedia.org/wiki/Special:Search?go=Go&search=%s")
+ ("imdb" "IMDb" "http://www.imdb.com/Find?%s")
+ ("nc-wiki" "nCipher wiki"
+ "http://wiki.ncipher.com/wiki/bin/view/Devel/?topic=%s")
+ ("map" "Google maps" "http://maps.google.co.uk/maps?q=%s&hl=en")
+ ("lp" "Launchpad bug by number"
+ "https://bugs.launchpad.net/bugs/%s")
+ ("lppkg" "Launchpad bugs by package"
+ "https://bugs.launchpad.net/%s")
+ ("msdn" "MSDN"
+ "http://social.msdn.microsoft.com/Search/en-GB/?query=%s&ac=8")
+ ("debbug" "Debian bug by number"
+ "http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=%s")
+ ("debbugpkg" "Debian bugs by package"
+ "http://bugs.debian.org/cgi-bin/pkgreport.cgi?pkg=%s")
+ ("ljlogin" "LJ login" "http://www.livejournal.com/login.bml")))
+ (add-to-list 'w3m-search-engine-alist
+ (list (cadr item) (caddr item) nil))
+ (add-to-list 'w3m-uri-replace-alist
+ (list (concat "\\`" (car item) ":")
+ 'w3m-search-uri-replace
+ (cadr item))))))
+
;;;--------------------------------------------------------------------------
;;; Paragraph filling.
answer))))
(setq backup-enable-predicate 'mdw-backup-enable-predicate)
+;; Frame cleanup.
+
+(defun mdw-last-one-out-turn-off-the-lights (frame)
+ "Disconnect from an X display if this was the last frame on that display."
+ (let ((frame-display (frame-parameter frame 'display)))
+ (when (and frame-display
+ (eq window-system 'x)
+ (not (some (lambda (fr)
+ (message "checking frame %s" frame)
+ (and (not (eq fr frame))
+ (string= (frame-parameter fr 'display)
+ frame-display)
+ (progn "frame %s still uses us" nil)))
+ (frame-list))))
+ (message "turn out the lights")
+ (run-with-idle-timer 0 nil #'x-close-connection frame-display))))
+(add-hook 'delete-frame-functions 'mdw-last-one-out-turn-off-the-lights)
+
;;;--------------------------------------------------------------------------
;;; General fontification.
(mdw-define-face default
(((type w32)) :family "courier new" :height 85)
(((type x)) :family "6x13" :height 130)
- (t :foreground "white" :background "black"))
+ (((type color)) :foreground "white" :background "black")
+ (t nil))
(mdw-define-face fixed-pitch
(((type w32)) :family "courier new" :height 85)
(((type x)) :family "6x13" :height 130)
(mdw-define-face variable-pitch
(((type x)) :family "helvetica" :height 120)))
(mdw-define-face region
- (((type tty)) :background "blue") (t :background "grey30"))
+ (((type tty) (class color)) :background "blue")
+ (((type tty) (class mono)) :inverse-video t)
+ (t :background "grey30"))
(mdw-define-face minibuffer-prompt
(t :weight bold))
(mdw-define-face mode-line
- (t :foreground "blue" :background "yellow"
- :box (:line-width 1 :style released-button)))
+ (((class color)) :foreground "blue" :background "yellow"
+ :box (:line-width 1 :style released-button))
+ (t :inverse-video t))
(mdw-define-face mode-line-inactive
- (t :foreground "yellow" :background "blue"
- :box (:line-width 1 :style released-button)))
+ (((class color)) :foreground "yellow" :background "blue"
+ :box (:line-width 1 :style released-button))
+ (t :inverse-video t))
(mdw-define-face scroll-bar
(t :foreground "black" :background "lightgrey"))
(mdw-define-face fringe
(t :foreground "yellow"))
(mdw-define-face show-paren-match
- (t :background "darkgreen"))
+ (((class color)) :background "darkgreen")
+ (t :underline t))
(mdw-define-face show-paren-mismatch
- (t :background "red"))
+ (((class color)) :background "red")
+ (t :inverse-video t))
(mdw-define-face highlight
- (t :background "DarkSeaGreen4"))
+ (((class color)) :background "DarkSeaGreen4")
+ (t :inverse-video t))
(mdw-define-face holiday-face
(t :background "red"))
(mdw-define-face comint-highlight-prompt
(t :weight bold))
- (mdw-define-face comint-highlight-input
- (t :slant italic))
+ (mdw-define-face comint-highlight-input)
(mdw-define-face trailing-whitespace
- (t :background "red"))
+ (((class color)) :background "red")
+ (t :inverse-video t))
(mdw-define-face mdw-punct-face
(((type tty)) :foreground "yellow") (t :foreground "burlywood2"))
(mdw-define-face mdw-number-face
(t :slant italic))
(mdw-define-face font-lock-builtin-face
(t :weight bold))
+(mdw-define-face font-lock-type-face
+ (t :weight bold :slant italic))
(mdw-define-face font-lock-reference-face
(t :weight bold))
(mdw-define-face font-lock-variable-name-face
(t :slant italic))
(mdw-define-face font-lock-comment-delimiter-face
- (default :slant italic)
- (((type tty)) :foreground "green") (t :foreground "SeaGreen1"))
+ (((class mono)) :weight bold)
+ (((type tty) (class color)) :foreground "green")
+ (t :slant italic :foreground "SeaGreen1"))
(mdw-define-face font-lock-comment-face
- (default :slant italic)
- (((type tty)) :foreground "green") (t :foreground "SeaGreen1"))
+ (((class mono)) :weight bold)
+ (((type tty) (class color)) :foreground "green")
+ (t :slant italic :foreground "SeaGreen1"))
(mdw-define-face font-lock-string-face
- (t :foreground "SkyBlue1"))
-
+ (((class mono)) :weight bold)
+ (((class color)) :foreground "SkyBlue1"))
(mdw-define-face message-separator
(t :background "red" :foreground "white" :weight bold))
(mdw-define-face message-cited-text
(define-derived-mode csharp-mode java-mode "C#"
"Major mode for editing C# code.")
+;;;--------------------------------------------------------------------------
+;;; Go programming configuration.
+
+(defun mdw-fontify-go ()
+
+ (make-local-variable 'font-lock-keywords)
+ (let ((go-keywords
+ (mdw-regexps "break" "case" "chan" "const" "continue"
+ "default" "defer" "else" "fallthrough" "for"
+ "func" "go" "goto" "if" "import"
+ "interface" "map" "package" "range" "return"
+ "select" "struct" "switch" "type" "var")))
+
+ (setq font-lock-keywords
+ (list
+
+ ;; Handle the keywords defined above.
+ (list (concat "\\<\\(" go-keywords "\\)\\>")
+ '(0 font-lock-keyword-face))
+
+ ;; Handle numbers too.
+ ;;
+ ;; The following isn't quite right, but it's close enough.
+ (list (concat "\\<\\("
+ "0\\([xX][0-9a-fA-F]+\\|[0-7]+\\)\\|"
+ "[0-9]+\\(\\.[0-9]*\\|\\)"
+ "\\([eE]\\([-+]\\|\\)[0-9]+\\|\\)\\)")
+ '(0 mdw-number-face))
+
+ ;; And anything else is punctuation.
+ (list "\\(\\s.\\|\\s(\\|\\s)\\|\\s\\\\|\\s/\\)"
+ '(0 mdw-punct-face))))))
+
;;;--------------------------------------------------------------------------
;;; Awk programming configuration.
(setq hs-hide-comments-when-hiding-all nil)
+(defadvice hs-hide-all (after hide-first-comment activate)
+ (save-excursion (hs-hide-initial-comment-block)))
+
;;;--------------------------------------------------------------------------
;;; Shell mode.
(define-key term-raw-map [M-left] 'term-send-meta-left)
(define-key term-raw-map [?\e ?\M-O ?D] 'term-send-meta-left)))
+;;;--------------------------------------------------------------------------
+;;; Inferior Emacs Lisp.
+
+(setq comint-prompt-read-only t)
+
+(eval-after-load "comint"
+ '(progn
+ (define-key comint-mode-map "\C-w" 'comint-kill-region)
+ (define-key comint-mode-map [C-S-backspace] 'comint-kill-whole-line)))
+
+(eval-after-load "ielm"
+ '(progn
+ (define-key ielm-map "\C-w" 'comint-kill-region)
+ (define-key ielm-map [C-S-backspace] 'comint-kill-whole-line)))
+
;;;----- That's all, folks --------------------------------------------------
(provide 'dot-emacs)