emacs: Add Timesheet magic.
[profile] / emacs
diff --git a/emacs b/emacs
index 4d053e5..528656d 100644 (file)
--- a/emacs
+++ b/emacs
@@ -37,6 +37,9 @@
 (maybe-autoload 'git-status "git" nil t)
 (maybe-autoload 'git-blame-mode "git-blame" nil t)
 (maybe-autoload 'stgit "stgit" nil t)
+(maybe-autoload 'nc-timesheet-prepare "nc-timesheet" nil t nil)
+(maybe-autoload 'nc-timesheet-submit "nc-timesheet" nil t nil)
+
 (and (library-exists-p "vc-git")
      (not (memq 'GIT vc-handled-backends))
      (setq vc-handled-backends (cons 'GIT vc-handled-backends)))
 (setq rmail-display-summary t)
 (setq rmail-file-name "~/Mail/rmail")
 
+;; --- Customization ---
+
+(setq custom-file "~/.emacs-custom")
+(trap (load custom-file))
+
+(trap (load "~/.emacs-local"))
+
 ;; --- Internationalization twiddling ---
 
 (trap
 (setq dabbrev-case-replace nil)                ;Retain case when completing
 (setq next-line-add-newlines nil)      ;Don't add weird newlines
 (setq split-height-threshold 45)       ;Reuse windows where sensible
+(setq display-buffer-reuse-frames nil  ;Don't confuse me by showing buffers
+      iswitchb-default-method 'samewindow) ;in other random frames
 (setq dired-deletion-confirmer         ;Make deletion easier in dired
       (symbol-function 'y-or-n-p))
 (setq dired-listing-switches "-alF")   ;Do `ls -F' things in dired windows
       '("-print0 | xargs -0r ls -ld" . "ld"))
 (setq bookmark-save-flag 0)            ;Save bookmarks automatically
 (setq Info-fontify-maximum-menu-size 60000)
+(setq set-mark-command-repeat-pop t)
 (setq ispell-program-name "aspell"
       ispell-local-dictionary "en_GB-ize-w_accents"
       flyspell-default-dictionary "en_GB-ize-w_accents"
 ;; --- Global keymap changes ---
 
 (trap
-  (windmove-default-keybindings)
-  (setq windmove-wrap-around t))
+  (windmove-default-keybindings))
+(setq windmove-wrap-around t)
 (trap (iswitchb-mode))
-(global-set-key "\M-#" 'calc-dispatch)
-(global-set-key [f4] 'query-replace-regexp)
-(global-set-key [f5] 'goto-line)
-(global-set-key [f6] 'auto-fill-mode)
-(global-set-key [f7] 'occur)
-(global-set-key [f8] 'undo)
-(global-set-key [f9] 'mdw-divvy-window)
+(global-set-key [?\C-x ?w left] 'windmove-left)
+(global-set-key [?\C-x ?w ?h] 'windmove-left)
+(global-set-key [?\C-x ?w up] 'windmove-up)
+(global-set-key [?\C-x ?w ?k] 'windmove-up)
+(global-set-key [?\C-x ?w down] 'windmove-down)
+(global-set-key [?\C-x ?w ?j] 'windmove-down)
+(global-set-key [?\C-x ?w right] 'windmove-right)
+(global-set-key [?\C-x ?w ?l] 'windmove-right)
+(global-set-key [?\C-x ?t ?i] 'timeclock-in)
+(global-set-key [?\C-x ?t ?c] 'timeclock-change)
+(global-set-key [?\C-x ?t ?o] 'timeclock-out)
+(global-set-key [?\C-x ?t ?r] 'timeclock-reread-log)
+(global-set-key [?\C-x ?t ?w] 'timeclock-workday-remaining-string)
+(global-set-key [?\C-x ?t ?s] 'timeclock-status-string)
+(global-set-key [?\C-x ?t ?p] 'nc-timesheet-prepare)
+(global-set-key [?\C-x ?t ?\C-m] 'nc-timesheet-submit)
+(global-set-key [?\M-#] 'calc-dispatch)
+(global-set-key [?\C-x ?/] 'auto-fill-mode)
+(global-set-key [?\C-x ?w ?d] 'mdw-divvy-window)
 (global-set-key [insertchar] 'overwrite-mode)
-(global-set-key "\C-xm" 'vm-mail)
-(global-set-key "\C-x\C-n" 'skel-create-file)
-(global-set-key "\C-x4n" 'skel-create-file-other-window)
-(global-set-key "\C-x5n" 'skel-create-file-other-frame)
+(global-set-key [?\C-x ?m] 'vm-mail)
+(global-set-key [?\C-x ?\C-n] 'skel-create-file)
+(global-set-key [?\C-x ?4 ?n] 'skel-create-file-other-window)
+(global-set-key [?\C-x ?5 ?n] 'skel-create-file-other-frame)
 (global-set-key [delete] 'delete-char)
-(global-set-key "\C-[\C-m" 'call-last-kbd-macro)
-(global-set-key "\M-q" 'mdw-fill-paragraph)
-(global-set-key "\C-h\C-m" 'manual-entry)
+(global-set-key [?\M-q] 'mdw-fill-paragraph)
+(global-set-key [?\C-h ?\C-m] 'manual-entry)
+(global-set-key [C-M-backspace] 'backward-kill-sexp)
 (global-set-key [mode-line C-mouse-1] 'mouse-tear-off-window)
 (global-set-key [vertical-scroll-bar C-down-mouse-1]
                'mouse-drag-vertical-line)
 (global-set-key [vertical-scroll-bar C-mouse-1]
                #'(lambda () (interactive)))
-(global-set-key [mouse-4] 'mdw-wheel-up)
-(global-set-key [mouse-5] 'mdw-wheel-down)
 
 ;; --- Recognising types of files ---
 
 
 (setq-default py-indent-offset 2)
 (add-hook 'python-mode-hook 'mdw-fontify-python t)
+(setq py-python-command-args `("-i" "-colors" ,(if mdw-black-background
+                                                  "Linux"
+                                                "LightBG")))
 
 (setq-default tcl-indent-level 2)
 (add-hook 'tcl-mode-hook 'mdw-fontify-tcl t)
 (add-hook 'lisp-interaction-mode-hook 'mdw-fontify-lispy t)
 (add-hook 'slime-repl-mode-hook 'mdw-fontify-lispy t)
 (add-hook 'lisp-mode-hook 'mdw-common-lisp-indent t)
-(trap
- (if (not mdw-fast-startup)
-     (progn
-       (require 'slime-autoloads)
-       (slime-setup '(slime-autodoc)))))
 (add-hook 'inferior-lisp-mode-hook
          #'(lambda ()
              (local-set-key "\C-m" 'comint-send-and-indent)) t)
 
 ;;;----- SLIME setup --------------------------------------------------------
 
+(trap
+ (if (not mdw-fast-startup)
+     (progn
+       (require 'slime-autoloads)
+       (slime-setup '(slime-autodoc slime-c-p-c)))))
+
 (let ((stuff '((cmucl ("cmucl"))
               (sbcl ("sbcl") :coding-system utf-8-unix)
               (clisp ("clisp") :coding-system utf-8-unix))))
              (cons head slime-lisp-implementations))))))
 (setq slime-default-lisp 'sbcl)
 
+;;;----- Blogging -----------------------------------------------------------
+
+(setq weblogger-config-alist
+      '(("vox"
+        ("user" . "mdw")
+        ("server-url" . "http://vox.distorted.org.uk/admin/mt-xmlrpc.cgi")
+        ("weblog" . "1"))))
+
 ;;;----- Shell mode ---------------------------------------------------------
 
 ;; --- Make the shell mode aware of my prompt ---
 ;; --- Notice passwords, and make C-a work right ---
 
 (add-hook 'shell-mode-hook #'mdw-sh-mode-setup)
+(setq shell-font-lock-keywords nil)
 
 (add-hook 'term-mode-hook #'mdw-term-mode-setup)