# HG changeset patch # User Fabien Ninoles # Date 1318510002 14400 # Node ID a234a7579958598cbcba331a261081d35a3a8145 # Parent df7496e40beee31447dcf1a7479e8b2965d1abde Add Emacs lisp files. diff -r df7496e40bee -r a234a7579958 emacs.el --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/emacs.el Thu Oct 13 08:46:42 2011 -0400 @@ -0,0 +1,10 @@ +(setq last-nonmenu-event nil) +(setenv "LANG" "C") +(setenv "LC_ALL" "C") +(setq load-path + (cons "~/.lisp" load-path)) +(require 'my-init) +;(my-planner-replan) +(server-start) +;(add-to-list 'vc-handled-backends 'SVK) +; (iconify-frame) diff -r df7496e40bee -r a234a7579958 lisp/my-cpp.el --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lisp/my-cpp.el Thu Oct 13 08:46:42 2011 -0400 @@ -0,0 +1,10 @@ +(c-add-style + "zeromq" + '("linux" + (c-basic-offset . 4) + (c-offsets-alist + (arglist-cont . +) + (arglist-cont-nonempty . +)) +)) + +(provide 'my-cpp) \ No newline at end of file diff -r df7496e40bee -r a234a7579958 lisp/my-custom.el --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lisp/my-custom.el Thu Oct 13 08:46:42 2011 -0400 @@ -0,0 +1,114 @@ +(custom-set-variables + ;; custom-set-variables was added by Custom. + ;; If you edit it by hand, you could mess it up, so be careful. + ;; Your init file should contain only one such instance. + ;; If there is more than one, they won't work right. + '(auto-compression-mode t nil (jka-compr)) + '(backup-directory-alist (quote (("." . "/home/fabien/.backup")))) + '(bbdb-auto-notes-alist (quote (("X-ML-Name" (".*$" ML 0 nil))))) + '(bbdb-file "~/PIM/bbdb") + '(bbdb-north-american-phone-numbers-p nil) + '(bbdb-notice-hook (quote (bbdb-auto-notes-hook))) + '(bbdb-use-pop-up nil) + '(bbdb-user-mail-names "\\bfabien@\\(alteranode\\.com\\|tzone.org\\|flipr.com\\)\\b") + '(bbdb/mail-auto-create-p (quote bbdb-ignore-selected-messages-hook)) + '(bbdb/news-auto-create-p nil) + '(browse-url-browser-function (quote browse-url-mozilla)) + '(browse-url-mozilla-program "firefox") + '(c-default-style (quote ((c++-mode . "zeromq") (java-mode . "java") (awk-mode . "awk") (other . "gnu")))) + '(calendar-mark-diary-entries-flag t) + '(calendar-view-diary-initially-flag t) + '(case-fold-search t) + '(current-language-environment "UTF-8") + '(custom-file "/home/fabien/.lisp/my-custom.el") + '(default-input-method "rfc1345") + '(delete-old-versions t) + '(diary-display-function (quote (fancy-diary-display))) + '(diary-hook (quote (appt-make-list))) + '(diary-mail-addr "fabien@alteranode.com") + '(dired-kept-versions 2) + '(dired-listing-switches "-l") + '(dvc-select-priority (quote (xhg bzr))) + '(elmo-maildir-folder-path "~/Mail") + '(emms-browser-default-browse-type (quote info-genre)) + '(emms-player-list (quote (emms-player-mpd emms-player-lastfm-radio))) + '(eshell-modules-list (quote (eshell-alias eshell-banner eshell-basic eshell-cmpl eshell-dirs eshell-glob eshell-hist eshell-ls eshell-pred eshell-prompt eshell-rebind eshell-script eshell-smart eshell-term eshell-unix))) + '(eshell-prefer-lisp-functions t) + '(eshell-prefer-to-shell t nil (eshell)) + '(eshell-unix-load-hook (quote (eshell-unix-initialize local-init-eshell))) + '(european-calendar-style t) + '(global-font-lock-mode t nil (font-lock)) + '(indent-tabs-mode nil) + '(ispell-local-dictionary "francais-intl" t) + '(ispell-local-dictionary-alist (quote (("francais-intl" "A-Za-zÀÂÆÇÈÉÊËÎÏÔÙÛÜŒÑæàâçèéêëîïôùûüœñ" "^A-Za-zÆÀÂÇÈÉÊËÎÏÔÙÛÜÑŒæàâçèéêëîïôùûüœñ" "-'" t ("-d" "french") "~list" iso-8859-15)))) + '(mail-host-address "ozone.tzone.org") + '(muse-project-alist (quote (("WikiPlanner" ("~/Plans" :major-mode planner-mode :default "TaskPool" :visit-link planner-visit-link) (:base "\"planner-xhtml\"" :path "\"~/public_html/Plans\""))))) + '(my-planner-last-replan-day (quote (6 15 2010))) + '(nxml-slash-auto-complete-flag t) + '(org-agenda-files (quote ("~/philo/draft/plan.org" "~/cda-web/TODO.org"))) + '(planner-appt-alert-buffer "*Alerts*") + '(planner-appt-forthcoming-appt-section "Rendez-vous à venir") + '(planner-appt-schedule-section "Horaire") + '(planner-appt-task-appointments-section "* Rendez-vous") + '(planner-appt-task-use-appointments-section-flag t) + '(planner-appt-update-appts-on-save-flag t) + '(planner-day-page-template (quote my-planner-day-page-template)) + '(planner-diary-appts-string "* Rendez-vous") + '(planner-diary-string "* Évènements") + '(planner-diary-use-appts t) + '(planner-diary-use-cal-desk nil) + '(planner-diary-use-diary t) + '(planner-initial-page "Bienvenue") + '(planner-log-edit-flush-regexp-list (quote ("^#"))) + '(planner-multi-separator ", ") + '(planner-plan-page-template (quote my-planner-plan-page-template)) + '(planner-sections (quote ((tasks . "Tâches") (notes . "Notes")))) + '(planner-timeclock-summary-include-sub-plan-pages-flag t) + '(planner-timeclock-summary-not-planned-string "Non planifiée") + '(planner-timeclock-summary-proj-header "Rapport d'activités") + '(planner-timeclock-summary-section "Activités") + '(remember-handler-functions (quote (remember-planner-append))) + '(rng-schema-locating-files (quote ("schemas.xml" "~/.nxml/schemas.xml" "/usr/share/emacs/site-lisp/nxml-mode/schema/schemas.xml"))) + '(safe-local-variable-values (quote ((sgml-default-dtd-file . "/home/fabien/.sgml/poetry/section.ced") (sgml-default-dtd-file . "~/.sgml/poetry/section.ced") (sgml-local-catalogs "catalog" "../catalog") (sgml-default-dtd-file . "~/.sgml/poetry/poetry.ced") (sgml-parent-document "poetry.xml" "section" "subsection" ("title")) (sgml-indent-step . 0) (default-justification . full) (sgml-omittag . t) (sgml-shorttag . t) (sgml-namecase-general . t) (sgml-default-dtd-file . "~/.sgml/html401.ced") (sgml-indent-data . t) (sgml-local-catalogs "../catalog") (sgml-default-dtd-file . "~/.sgml/docbook/book.ced") (sgml-omittag) (sgml-shorttag) (sgml-namecase-general) (sgml-general-insert-case . lower) (sgml-minimize-attributes) (sgml-always-quote-attributes . t) (sgml-indent-step . 2) (sgml-indent-data) (sgml-parent-document) (sgml-default-dtd-file . "~/.sgml/docbook/article.ced") (sgml-exposed-tags) (sgml-local-catalogs) (sgml-local-ecat-files)))) + '(save-place t nil (saveplace)) + '(smtp-default-server "localhost") + '(smtp-end-of-line " + +" t) + '(smtp-fqdn "ozone.tzone.org") + '(smtp-local-domain "tzone.org") + '(smtp-open-connection-function (quote open-network-stream) t) + '(smtp-server "localhost") + '(tab-width 4) + '(timeclock-file "~/Plans/timelog") + '(uniquify-buffer-name-style (quote post-forward-angle-brackets) nil (uniquify)) + '(use-file-dialog nil) + '(vc-command-messages t) + '(vc-handled-backends (quote (RCS CVS SVN SCCS Arch MCVS hg))) + '(version-control t) + '(whitespace-style (quote (face tabs spaces trailing lines space-before-tab newline indentation empty space-after-tab space-mark tab-mark newline-mark))) + '(wl-auto-check-folder-name "INBOX") + '(wl-bcc nil) + '(wl-draft-always-delete-myself t) + '(wl-draft-send-mail-function (quote sendmail-send-it)) + '(wl-draft-use-frame t) + '(wl-envelope-from "fabien@ozone.tzone.org") + '(wl-folder-init-load-access-folders (quote ("^.OZoNE/\\(INBOX\\|yahoogroups\\|sourceforge\\|debian\\)$" "^.Alteranode/mbox$"))) + '(wl-from "Fabien Ninoles " t) + '(wl-interactive-send t) + '(wl-smtp-authenticate-type "login") + '(wl-smtp-connection-type (quote starttls)) + '(wl-smtp-posting-port 587) + '(wl-smtp-posting-server "ozone.tzone.org") + '(wl-smtp-posting-user "fabien") + '(wl-summary-from-function (quote bbdb-wl-from-func)) + '(wl-temporary-file-directory "~/.tmp/") + '(wl-user-mail-address-list (quote ("fabien@tzone.org" "fabien@alteranode.com" "veneur@tzone.org")))) +(custom-set-faces + ;; custom-set-faces was added by Custom. + ;; If you edit it by hand, you could mess it up, so be careful. + ;; Your init file should contain only one such instance. + ;; If there is more than one, they won't work right. + ) + +(provide 'my-custom) diff -r df7496e40bee -r a234a7579958 lisp/my-dict.el --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lisp/my-dict.el Thu Oct 13 08:46:42 2011 -0400 @@ -0,0 +1,12 @@ +;;; ISpell configuration +(setq ispell-local-dictionary-alist + (append ispell-local-dictionary-alist + (quote ("francais-intl" + "[A-Za-zÀÂÆÇÈÉÊËÎÏÔÙÛÜŒÑæàâçèéêëîïôùûüœñ]" + "[^A-Za-zÆÀÂÇÈÉÊËÎÏÔÙÛÜÑŒæàâçèéêëîïôùûüœñ]" + "[-']" + nil + ("-d" "french") + "~list" iso-8859-15)))) + +(provide 'my-dict) diff -r df7496e40bee -r a234a7579958 lisp/my-emacs.el --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lisp/my-emacs.el Thu Oct 13 08:46:42 2011 -0400 @@ -0,0 +1,142 @@ +;;;_ Helpers + +(setq load-path + (cons "~/lisp" load-path)) +(defun join (SEQUENCES sep) + (mapconcat 'copy-sequence SEQUENCES sep)) + + +;;;_ Version control + +;(require 'vc-svn) +(require 'vc-svk) +;(require 'vc-svk2) +(add-to-list 'vc-handled-backends 'SVK) +;(require 'psvn) +(require 'psvk) + +;;;_ EShell configuration +(setenv "EDITOR" "gnuclient") +(setenv "VISUAL" "gnuclient") +(setenv "DEBIAN_FRONTEND" "editor") +(defun local-init-eshell () + "Local customization of eshell." + (defsubst eshell/make (&rest args) + "run make in lisp compile." + (compile (join (push "make" args) " ")))) + +;;; ISpell configuration +(if (fboundp 'debian-ispell-add-dictionary-entry) + (debian-ispell-add-dictionary-entry + (quote ("francais-intl" + "[A-Za-zÀÂÆÇÈÉÊËÎÏÔÙÛÜŒÑæàâçèéêëîïôùûüœñ]" + "[^A-Za-zÆÀÂÇÈÉÊËÎÏÔÙÛÜÑŒæàâçèéêëîïôùûüœñ]" + "[-']" + nil + ("-d" "french") + "~list" iso-8859-15)) + "aspell")) +(setq ispell-dictionary-alist debian-ispell-dictionary-alist) + + +;;;_ Planner configuration + +;; In emacs21/sarge, schedule doesn't exist. +;; But in planner-el/etch, schedule is in contrib. +(if (not (locate-library "schedule")) + (setcdr (last load-path) + '("/usr/share/emacs/site-lisp/planner-el/contrib"))) +(if (locate-library "schedule") + (require 'planner-timeclock)) +(require 'planner-wl) +(planner-wl-insinuate) +(require 'planner-diary) +(planner-diary-insinuate) +(planner-calendar-insinuate) +(require 'planner-appt) +(planner-appt-use-tasks) +(planner-appt-insinuate) +(require 'planner-cyclic) +(planner-appt-schedule-cyclic-insinuate) +(planner-appt-calendar-insinuate) +(require 'planner-timeclock-summary) +(planner-timeclock-summary-insinuate) +(require 'planner-timeclock-summary-proj) +(planner-timeclock-summary-proj-insinuate) +(require 'planner-schedule) +(require 'planner-bbdb) +(require 'planner-erc) +(require 'planner-bookmark) +(require 'remember-planner) +(require 'planner-log-edit) +(planner-install-extra-task-keybindings) +(planner-install-extra-context-keybindings) +(require 'planner-trunk) +(require 'planner-multi) +; Local functions for planner +(require 'my-planner) + +(require 'my-mailto) +;;;_ Wanderlust settings + +(autoload 'wl-user-agent-compose "wl-draft" nil t) +(if (boundp 'mail-user-agent) + (setq mail-user-agent 'wl-user-agent)) +(if (fboundp 'define-mail-user-agent) + (define-mail-user-agent + 'wl-user-agent + 'wl-user-agent-compose + 'wl-draft-send + 'wl-draft-kill + 'mail-send-hook)) +(setq wl-draft-init-config-alist + '((reply "^\\(To\\|CC\\): .*@alteranode.com" + ("From" . "Fabien Ninoles ")) + (reply "^\\(To\\|CC\\): .*fabien@flipr.com" + ("From" . "Fabien Ninoles ")))) +(setq wl-draft-send-config-alist + '(("^From: .*fabien\\(\\+.*\\)?@tzone.org" + ("BCC" . "fabien+sentmail@tzone.org")) + ("From: .*fabien\\(\\+.*\\)?@alteranode.com" + ("Organisation" . "Alteranode, inc.") + ("BCC" . "fabien+sentmail@alteranode.com")) + ("From: .*fabien\\(\\+.*\\)?@flipr.com" + ("BCC" . "fabien+sentmail@alteranode.com")))) +(add-hook 'wl-mail-setup-hook + '(lambda () + (wl-draft-config-exec wl-draft-init-config-alist) + (setq wl-draft-config-exec-flag t))) +(add-hook 'wl-draft-send-hook + '(lambda () + (setq wl-draft-config-exec-flag t) + (wl-draft-config-exec wl-draft-send-config-alist) + )) +(require 'bbdb-wl) +(bbdb-wl-setup) +;; enable pop-ups +(setq bbdb-use-pop-up t) +;; auto collection +(setq bbdb/mail-auto-create-p t) +;; exceptional folders against auto collection +(setq bbdb-wl-ignore-folder-regexp "^@") +(setq signature-use-bbdb t) +(setq bbdb-north-american-phone-numbers-p nil) +;; shows the name of bbdb in the summary :-) +(setq wl-summary-from-function 'bbdb-wl-from-func) +;; automatically add mailing list fields +(add-hook 'bbdb-notice-hook 'bbdb-auto-notes-hook) +(setq bbdb-auto-notes-alist '(("X-ML-Name" (".*$" ML 0)))) + + +;;;_ Auto outline Allout + +;(require 'allout) +;(outline-init t) + +;;;_ Start up command + +;; (server-start) +(display-time) +(diary 0) +(plan 31) +(iconify-frame) diff -r df7496e40bee -r a234a7579958 lisp/my-file-mode.el diff -r df7496e40bee -r a234a7579958 lisp/my-gnus.el --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lisp/my-gnus.el Thu Oct 13 08:46:42 2011 -0400 @@ -0,0 +1,123 @@ +(setq mm-coding-system-priorities + '(iso-latin-1 iso-latin-9)) + +(defun local-nnmail-match-expiry (newsgroup) + "Return default expiry for different newsgroup." + (cond ((string-match "archives" newsgroup) 'never) + ((string-match "sentmail" newsgroup) 'never) + ((string-match "postponed" newsgroup) 'never) + ((string-match "debian" newsgroup) 7) + ((string-match "jabber" newsgroup) 7) + ((string-match "gnucash" newsgroup) 7) + ((string-match "egroups" newsgroup) 7) + ((string-match "emacs.ding" newsgroup) 7) + ((string-match "spam" newsgroup) 1) + (t 31))) + +(defvar local-signature-alist nil) +(setq local-signature-alist + '(("default" . (("name" . "Fabien Nioles") + ("title" . "") + ("email" . "fabien@tzone.org") + ("web" . "http://www.tzone.org") + ("key" . "C15D FE9E BB35 F596 127F BF7D 8F1F DFC9 BCE0 9436"))) + ("debian" . (("email" . "fabien@debian.org") + ("web" . "http://www.debian.org") + ("title" . "Debian Maintainer"))) + ("clef" . (("email" . "veneur@tzone.org") + ("web" . "http://harmonies.tzone.org") + ("title" . "Chevalier de la Loge des Terres de l'Aube") + ("name" . "Le Veneur Gris"))) + ("hdf" . (("email" . "veneur@tzone.org") + ("web" . "http://harmonies.tzone.org") + ("title" . "Chevalier Servant de Sa Dame") + ("name" . "Le Veneur Gris"))) + ("nephilim" . (("email" . "coeurdelune@nephilim-rpg.com") + ("name" . "Coeur de Lune") + ("title" . "Zphir orphelin") + ("web" . "http://harmonies.tzone.org"))) + ("ids" . (("name" . "Goudron Sauvage") + ("title" . "Valier Vampire Dcal Rvolutionnaire") + ("email" . "veneur@tzone.org") + ("web" . "http://cruche.valiere.free.fr"))) + ("rdd" . (("name" . "Baffouille") + ("title" . "Enrveur et Archimage") + ("email" . "veneur@tzone.org") + ("web" . "http://harmonies.tzone.org"))) + ("jdr" . (("title" . "Arpges, le jeu des Harmonies") + ("web" . "http://harmonies.tzone.org"))) + ("baff" . (("name" . "Baffouille") + ("title" . "Enrveur et Archimage"))))) + +(defun local-gen-sign (type) + "Generate a signature." + (let + ((default-keys + (copy-alist + (cdr (assoc "default" local-signature-alist)))) + (selected-keys + (cdr (assoc type local-signature-alist)))) + (dolist (pair selected-keys default-keys) + (setcdr (assoc (car pair) default-keys) + (cdr pair))) + (let* + ((GPG-title "GPG KeyID:") + (name (cdr (assoc "name" default-keys))) + (title (cdr (assoc "title" default-keys))) + (email (cdr (assoc "email" default-keys))) + (web (cdr (assoc "web" default-keys))) + (key (cdr (assoc "key" default-keys))) + (maxlenght + (max (+ 2 (string-width name) (string-width title)) + (+ 2 (string-width email) (string-width web)) + (+ 1 (string-width GPG-title) (string-width key))))) + (concat name + (make-string (- maxlenght (string-width name) (string-width title)) ? ) + title + "\n" + email + (make-string (- maxlenght (string-width email) (string-width web)) ? ) + web + "\n" + GPG-title + (make-string (- maxlenght (string-width GPG-title) (string-width key)) ? ) + key + "\n")))) + +(defvar local-last-sig nil) +(defun local-insert-signature (type) + "Insert a signature." + (interactive (list + (completing-read "Which signature: " + local-signature-alist + nil + nil + nil + nil + (or local-last-sig "default")))) + (setq local-last-sig type) + (save-excursion + (goto-char (point-max)) + (let ((beg-sign + (re-search-backward message-signature-separator nil t))) + (if beg-sign + (kill-region + beg-sign (point-max)))) + (goto-char (point-max)) + (unless (bolp) + (insert "\n")) + (insert "-- \n") + (insert (local-gen-sign type)))) + +(defun local-alter-message-map () + (local-set-key "\C-c\C-w" 'local-insert-signature)) + +(defun local-outgoing-message-group () + "Return the sentmail group." + (concat "mail/sentmail-archives/" + (format-time-string "%Y.%m"))) + +(setq gnus-outgoing-message-group + 'local-outgoing-message-group) + +(provide 'local-gnus) diff -r df7496e40bee -r a234a7579958 lisp/my-init.el --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lisp/my-init.el Thu Oct 13 08:46:42 2011 -0400 @@ -0,0 +1,33 @@ +;;; Inside .emacs.el +;; ;; Set to nil for a nonmenu-event like... +;; (setq last-nonmenu-event nil) +;; (setq load-path +;; (cons "~/lisp" load-path)) +;; (require 'my-init) + +;;;_ Helpers + +(defun join (SEQUENCES sep) + (mapconcat 'copy-sequence SEQUENCES sep)) + +(require 'my-shell) +;(require 'my-planner) +;(require 'my-vc) +;(require 'my-mail) +(require 'my-custom) +;(require 'my-dict) +(require 'calc) +;(require 'css-mode) +(require 'my-org) +(require 'my-python) +(require 'my-cpp) +(require 'my-markdown) + +;;;_ final provide before startup + +(provide 'my-init) + +;;;_ Start up commands + +;(plan 31) +;(iconify-frame) diff -r df7496e40bee -r a234a7579958 lisp/my-mail.el --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lisp/my-mail.el Thu Oct 13 08:46:42 2011 -0400 @@ -0,0 +1,81 @@ +(require 'browse-url) + +;;;_ Custom functions + +; Redefine browse-url-mail for ?subject=SUBJECT support. + +(defun browse-url-mail (url &optional new-window) + "Open a new mail message buffer within Emacs. +Default to using the mailto: URL around or before point as the +recipient's address. Supplying a non-nil interactive prefix argument +will cause the mail to be composed in another window rather than the +current one. + +When called interactively, if variable `browse-url-new-window-flag' is +non-nil use `compose-mail-other-window', othserwise `compose-mail'. A +non-nil interactive prefix argument reverses the effect of +`browse-url-new-window-flag'. + +When called non-interactively, optional second argument NEW-WINDOW is +used instead of `browse-url-new-window-flag'." + (interactive (browse-url-interactive-arg "Mailto URL: ")) + (save-excursion + (let ((to (if (string-match "^mailto:" url) + (substring url 7) + url)) + (subject nil)) + (if (string-match "\\?subject=" to) + (setq subject (substring to (match-end 0)) + to (substring to 0 (match-beginning 0)))) + (if (browse-url-maybe-new-window new-window) + (compose-mail-other-window to subject nil nil + (list 'insert-buffer (current-buffer))) + (compose-mail to subject nil nil nil + (list 'insert-buffer (current-buffer))))))) + +;;;_ Wanderlust settings + +(autoload 'wl-user-agent-compose "wl-draft" nil t) +(if (boundp 'mail-user-agent) + (setq mail-user-agent 'wl-user-agent)) +(if (fboundp 'define-mail-user-agent) + (define-mail-user-agent + 'wl-user-agent + 'wl-user-agent-compose + 'wl-draft-send + 'wl-draft-kill + 'mail-send-hook)) +(setq wl-draft-init-config-alist + '((reply "^\\(To\\|CC\\): .*@alteranode.com" + ("From" . "Fabien Ninoles ")) + (reply "^\\(To\\|CC\\): .*fabien@flipr.com" + ("From" . "Fabien Ninoles ")))) +(setq wl-draft-send-config-alist + '(("^From: .*fabien\\(\\+.*\\)?@tzone.org" + ("BCC" . "fabien+sentmail@tzone.org")) + ("From: .*fabien\\(\\+.*\\)?@alteranode.com" + ("Organisation" . "Alteranode, inc.") + ("BCC" . "fabien+sentmail@alteranode.com")) + ("From: .*fabien\\(\\+.*\\)?@flipr.com" + ("BCC" . "fabien+sentmail@alteranode.com")))) +(add-hook 'wl-mail-setup-hook + '(lambda () + (wl-draft-config-exec wl-draft-init-config-alist) + (setq wl-draft-config-exec-flag t))) +(add-hook 'wl-draft-send-hook + '(lambda () + (setq wl-draft-config-exec-flag t) + (wl-draft-config-exec wl-draft-send-config-alist) + )) + +;;;_ BBDB configuration + +(require 'bbdb-wl) +(bbdb-wl-setup) +;; exceptional folders against auto collection +(setq bbdb-wl-ignore-folder-regexp "^@") +(setq signature-use-bbdb t) +;; automatically add mailing list fields +(setq bbdb-ignore-selected-messages-confirmation t) + +(provide 'my-mail) \ No newline at end of file diff -r df7496e40bee -r a234a7579958 lisp/my-markdown.el --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lisp/my-markdown.el Thu Oct 13 08:46:42 2011 -0400 @@ -0,0 +1,11 @@ +(add-to-list 'auto-mode-alist '("\\.md$" . markdown-mode)) + +(setq ditaa-cmd "ditaa") +(defun ditaa-generate (start end) + (interactive "r") + (let ((tmpfile (make-temp-file "ditaa"))) + (write-region start end tmpfile) + (shell-command + (concat ditaa-cmd " " tmpfile " " (concat buffer-file-name ".png"))))) + +(provide 'my-markdown) \ No newline at end of file diff -r df7496e40bee -r a234a7579958 lisp/my-old-planner.el --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lisp/my-old-planner.el Thu Oct 13 08:46:42 2011 -0400 @@ -0,0 +1,448 @@ +; timeclock functionnality +(require 'timeclock) +(require 'calendar) + +;(timeclock-modeline-display) +(add-hook 'kill-emacs-hook 'timeclock-query-out) + +;; planner mode + +;;; helper functions + +(defun planner-date-to-calendar (date) + "Convert a planner date string like \"YYYY.MM.DD\" in + a calendar date list (month day year)." + (let ((split-date + (mapcar 'string-to-number + (split-string (file-name-nondirectory date) "\\.")))) + (list (nth 1 split-date) + (nth 2 split-date) + (nth 0 split-date)))) + +(defsubst calendar-date-to-planner (date) +; "Convert a planner date string like \"YYYY.MM.DD\" in +; a calendar date list (month day year)." + (format "%04d.%02d.%02d" + (nth 2 date) + (nth 0 date) + (nth 1 date))) + +;; Moving functions + +(defun planner-goto-schedule () + "Create if necessary and go to a Schedule section in current planner. +Ensure to preserved the buffer-modified-p value so that a kill will not +preserve the automated change for nothing." + (interactive) + (goto-char (point-min)) + (let ((modified (buffer-modified-p))) + (unless (re-search-forward "^\\* Schedule\n\n" nil t) + (re-search-forward "^\\* Notes") + (beginning-of-line) + (insert "* Schedule\n\n\n\n") + (forward-line -2) + (set-buffer-modified-p modified)))) + +(defun planner-goto-events () + "Create if necessary and go to a Events section just before the +Schedule one (which is also create if necessary) in current planner. +Ensure to preserved the buffer-modified-p value so that a kill will +not preserve the automated change for nothing." + (interactive) + (goto-char (point-min)) + (let ((modified (buffer-modified-p))) + (unless (re-search-forward "^\\* Events\n\n" nil t) + (planner-goto-schedule) + (re-search-backward "^\\* Schedule") + (insert "* Events\n\n\n\n") + (forward-line -2) + (set-buffer-modified-p modified)))) + +;; The reminders converter. +;; +;; It now used a custom diary file, so you +;; can included it without breaking your normal diary-file. +;; The function can also set some arguments. I used it to call +;; a modified remconv which accept a "euro" argument to output +;; euro style date. +;; +;; I no more used those ones now since I'm directly marking the +;; calendar and the add-appt from the planner files. + +(defcustom planner-diary-file diary-file + "Diary file where to add planner entries. You can set this value to +another file than `diary-file' and add in `diary-file' the #include +\"~/your-planner-diary-file-name\". Just make sure that you call +`planner-convert-reminders' before `include-other-diary-files' in the +`list-diary-entries-hook'." + :type 'file + :group 'planner) + +(defcustom planner-remconv-command "remconv" + "A command that output diary compatible entries. Can take arguments +also." + :type 'string + :group 'planner) + +(defun planner-convert-reminders () + "Generate a diary file from a .reminders file. +You can add this this function to the `list-diary-entries-hook'" + (with-current-buffer (find-file-noselect planner-diary-file) + (erase-buffer) + (insert (shell-command-to-string planner-remconv-command)) + (save-buffer))) + +;; redefinition of planner-maybe-remove-file +;; +;; The kill-buffer of this function make me crazy. I modify it so you +;; can change it's behavior using this custom variable. Personnaly, I +;; used ignore and let emacs ask me to save it when I kill it. Take +;; also note that I change the regexp to remove any file that only +;; have empty section (section with just a first level heading). This +;; is to cope with the new Events and Schedule sections. + +(defcustom planner-not-empty-file 'kill-this-buffer + "Command to run when a planner file is not empty. Can be +kill-this-buffer, save-buffer or ignore for example." + :type 'function + :group 'planner) + +(defvar local-planner-empty-line-regexp "\\(\\* .*\\|[[:space:]]*\\)") +(defvar planner-empty-file-regexp + (concat "\\(^" local-planner-empty-line-regexp + "\n\\)*[[:space:]]*\\'")) + +; redefinition + +(defun planner-maybe-remove-file () + "This function remove the file if it contains only first level +headings and empty lines." + (interactive) + (goto-char (point-min)) + (if (looking-at planner-empty-file-regexp) + (let ((filename buffer-file-name)) + (set-buffer-modified-p nil) + (kill-buffer (current-buffer)) + (delete-file filename)) + (funcall planner-not-empty-file))) + +;; planner-browse-url bbdb url handling +;; +;; My emacs-wiki doesn't like bbdb url like [[bbdb://Fabien Nioles]] +;; I make this advice so he can replace _ with space and __ with _ in the +;; url before letting planner-browse-url handling it. + +(defadvice planner-browse-url (before local-bbdb-url-pretreatment (url)) + "Pretreatment of some URL." + (if (string-match "^bbdb://\\(.+\\)" url) + (setq url + (mapconcat + '(lambda (str) (subst-char-in-string ?_ ? str t)) + (split-string url "__") + "_")))) + +(ad-activate 'planner-browse-url) + +;; diary support functions +;; +;; This functions add diary entries into the Schedule and Events +;; sections of a planner buffer. I hook it to the +;; `planner-seek-to-first' function and only if the Events section +;; doesn't already exist. The best should be that it check if the +;; entry doesn't exist already instead but currently it works pretty +;; good. You can always call it interactively if you want to update +;; your Events/Schedule. Just make sure that you don't add the +;; `planner-convert-reminder' set in the `list-diary-entries-hook' +;; setup. + +(defun planner-insert-diary () + "Insert the diary schedule in the planner buffer." + (interactive) + (let* + ((entries (list-diary-entries (planner-date-to-calendar (emacs-wiki-page-name)) 1)) + (events)) + (planner-goto-schedule) + (while entries + (let* ((entry (nth 1 (car entries))) + (lines (split-string entry "\n")) + (line)) + (while (setq line (car lines)) + (if (string-match + "^[[:space:]]*\\([0-9]+:[0-9]\\{2\\}\\(?:am\\|pm\\)?\\)\\(-[0-9]+:[0-9]\\{2\\}\\(?:am\\|pm\\)?\\)?[[:space:]]+\\(.*\\)$" + line) + (let ((starttime (match-string 1 line)) + (endtime (match-string 2 line)) + (description (match-string 3 line))) + (insert (concat " " starttime + " | " description + (if endtime + (let + ((minutes + (- (appt-convert-time (substring endtime 1 nil)) + (appt-convert-time starttime)))) + (format " (%d:%02d)" + (/ minutes 60) + (% minutes 60))) + "") + "\n"))) + (setq events (cons line events))) + (setq lines (cdr lines)))) + (setq entries (cdr entries))) + (planner-goto-events) + (while events + (insert (concat " - " (car events) "\n")) + (setq events (cdr events))))) + +(defadvice planner-seek-to-first (after planner-insert-diary-ad ()) + "Insert the diary into a newly create buffer." + (if (string-match planner-date-regexp (emacs-wiki-page-name)) + (save-excursion + (goto-char (point-min)) + (if (not (re-search-forward "^\\* Events[[:space:]]*$" nil t)) + (planner-insert-diary))))) + +(ad-activate 'planner-seek-to-first) + +;; appt support +;; +;; I'm loading now my appointments directly from the planner list. It +;; has the same functionnality as the regular appt-make-list, +;; including its own planner-prev-appt-check variable. It's set as an +;; after-advice to appt-check. I also add a function that parse the +;; current line and add the appt to it's list. The +;; planner-appt-entry-regexp are setup to catch any 'HH:MM | Message +;; (HH:MM)' line (just like allrems). You can set it up also to ignore +;; some special line (like those beginning with '&' for example). + +(require 'appt) + +(defvar planner-appt-entry-regexp + "^[[:space:]]*\\([0-9]+:[0-9]\\{2\\}\\)[[:space:]]*|[[:space:]]*\\([^&].*\\)[[:space:]]*\\(([0-9]+:[0-9]\\{2\\})\\)?[[:space:]]*$" + "Regexp that match a appt entry in planner.") + +(defun planner-appt-add () + "Add this line as an appointment. The line should match +`planner-appt-entry-regexp'." + (interactive) + (save-excursion + (beginning-of-line) + (if (looking-at planner-appt-entry-regexp) + (appt-add (match-string-no-properties 1) (match-string-no-properties 2)) + (error "No appointment on this line")))) + +(defun planner-make-appt-list () + "Load today planner file and make appt-list from schedule." + (interactive) + (save-excursion + (save-window-excursion + (planner-goto-today) + (while (re-search-forward planner-appt-entry-regexp nil t) + (appt-add (match-string-no-properties 1) (match-string-no-properties 2)))))) + +(defvar planner-prev-appt-check nil + "Determine the last time appt-check are called") + +(defadvice appt-check (after planner-appt-check-ad ()) + "Call planner-make-appt-list the first time and every day." + (let* ((now (decode-time)) + (cur-hour (nth 2 now)) + (cur-min (nth 1 now)) + (cur-comp-time (+ (* cur-hour 60) cur-min))) + (if (or (null planner-prev-appt-check) + (< cur-comp-time planner-prev-appt-check)) + (planner-make-appt-list)) + (setq planner-prev-appt-check cur-comp-time))) + +(ad-activate 'appt-check) + +;; calendar support +;; +;; This function are used to mark calendar entries directly from the +;; planner files. I try to optimize it with a helper function that +;; take the list of planner-date string corresponding to the three +;; months display of the calendar (same behavior as the +;; mark-diary-entries-hook). One of the helper are made in elisp, and +;; the other used an external perl script to parse the entries. The +;; only thing check is a non-empty (I mean non-space) Events section. +;; Used it as a hook to the `mark-diary-entries-hook'. Since this +;; function also search for diary entries, you can used it in +;; conjunction with diary. And with the `planner-diary-insert' +;; function, you just have to type 'n' at the calendar day to see both +;; the diary and your normal planner entry. The helper script is call events +;; and it's very short (see documentation of planner-mark-calendar-external-helper +;; for the script. The script also return the entry line so that you can remove +;; specially mark entry if you care, either by directly modifying the +;; script or by modifying the planner-mark-calendar-external-helper +;; function. + +(defcustom planner-mark-calendar-helper 'planner-mark-calendar-internal-helper + "Helper function to determinate which day have a non-empty events. +Currently, it exist two functions to do it: +`planner-mark-calendar-internal-helper' which is a lisp +implementation, and `planner-mark-calendar-external-helper' which used +a external script to do most of the parsing." + :type 'function + :group 'planner) + +(defun planner-mark-calendar () + "Look for planner file with non-empty events." + (save-window-excursion + (set-buffer calendar-buffer) + (let ((prev-month displayed-month) + (prev-year displayed-year) + (succ-month displayed-month) + (succ-year displayed-year) + (last-day) + (day) + (files nil)) + (increment-calendar-month succ-month succ-year 1) + (increment-calendar-month prev-month prev-year -1) + (setq day (calendar-absolute-from-gregorian (list prev-month 1 prev-year))) + (setq last-day + (calendar-absolute-from-gregorian + (list succ-month + (calendar-last-day-of-month succ-month succ-year) + succ-year))) + (while (<= day last-day) + (let* ((date (calendar-gregorian-from-absolute day)) + (file + (expand-file-name + (calendar-date-to-planner date) + planner-directory))) + (if (file-readable-p file) + (setq files (cons file files)))) + (setq day (1+ day))) + (setq files (funcall planner-mark-calendar-helper files)) + (while files + (mark-visible-calendar-date (planner-date-to-calendar (car files))) + (setq files (cdr files)))))) + +(defun planner-mark-calendar-internal-helper (files) + "Local (elisp) helper function for `planner-mark-calendar'." + (let ((correct)) + (while files + (find-file-other-window (car files)) + (goto-char (point-min)) + (if (re-search-forward "^\\* Events" nil t) + (progn + (forward-line 1) + (if (re-search-forward + "[^[:space:]]+" + (save-excursion + (re-search-forward "^\\* " nil t) + (let ((p (match-beginning 0))) + (and p (1- p)))) + t) + (setq correct (cons (car files) correct))))) + (if (not (buffer-modified-p)) (kill-this-buffer)) + (setq files (cdr files))) + correct)) + +(defcustom planner-mark-calendar-external-script "events %s" + "Command line that select files that must be marked. +This string is send to the shell with %s replace with a list +of space separate (maybe non-existing) file names. An example +of such script follow: + +#!/usr/bin/perl -s + +for $file (sort @ARGV) { + open (FILE, $file) || die \"Cannot open file $file\\n\"; + $inevents = 0; + while () { + if ($inevents == 0) { + if (/^\\* Events/) { + $inevents = 1; + } + } elsif (/^\\* /) { + $inevents = 0; + break; + } + elsif (/^\\s*\\S/) { + printf \"$file: $_\"; + } + } + close (FILE); +}; +" + :type 'string + :group 'planner) + +(defun planner-mark-calendar-external-helper (files) + "Use an external application to parse the planner files. +The command line is set with the `planner-mark-calendar-external-script' +variable and must take a list of files as arguments." + (let* ((command (concat "events " + (mapconcat 'identity files " "))) + (output (split-string (shell-command-to-string command) "\n")) + (results)) + (while output + (if (string-match "^\\([^:]+\\):" (car output)) + (setq results + (cons (match-string 1 (car output)) + results))) + (setq output (cdr output))) + results)) + + +;; planner-mode key mapping +;; +;; No comment for this one. Do ye want. + +(eval-after-load "planner" + '(progn + (define-key planner-mode-map [(control ?c) (control ?w)] + 'planner-goto-schedule) + (define-key planner-mode-map [(control ?c) (control ?n)] + 'planner-create-note) + (define-key planner-mode-map [(control ?c) (control ?e)] + 'planner-appt-add))) + +;; global key mapping + +(define-key ctl-x-map "ta" 'planner-create-task) +(define-key ctl-x-map "ts" 'planner-goto-today) +(define-key ctl-x-map "ti" 'timeclock-in) +(define-key ctl-x-map "to" 'timeclock-out) +(define-key ctl-x-map "tc" 'timeclock-change) +(define-key ctl-x-map "tr" 'timeclock-reread-log) +(define-key ctl-x-map "tv" 'timeclock-status-string) +;(define-key ctl-x-map "tu" 'timeclock-update-modeline) +;(define-key ctl-x-map "tw" 'timeclock-when-to-leave-string) + + +(defun local-planner-kill-buffer () + "Kill the buffer and erase it if empty." + (interactive) + (let ( + (planner-not-empty-file 'kill-this-buffer) +; (planner-not-empty-file (lambda () (save-buffer) (kill-this-buffer))) + ) + (planner-maybe-remove-file))) + +;; planner-mode key mapping +(eval-after-load "planner" + '(progn + (define-key planner-mode-map [(control ?c) (control ?w)] + 'planner-goto-schedule) + (define-key planner-mode-map [(control ?c) (control ?n)] + 'planner-create-note) + (define-key planner-mode-map [(control ?c) (control ?k)] + 'local-planner-kill-buffer) + (define-key planner-mode-map [(control ?c) (control ?e)] + 'planner-appt-add))) + +;; global key mapping + +(define-key ctl-x-map "ta" 'planner-create-task) +(define-key ctl-x-map "ts" 'planner-goto-today) +(define-key ctl-x-map "tj" 'planner-goto) +(define-key ctl-x-map "ti" 'timeclock-in) +(define-key ctl-x-map "to" 'timeclock-out) +(define-key ctl-x-map "tc" 'timeclock-change) +(define-key ctl-x-map "tr" 'timeclock-reread-log) +(define-key ctl-x-map "tv" 'timeclock-status-string) +;(define-key ctl-x-map "tu" 'timeclock-update-modeline) +;(define-key ctl-x-map "tw" 'timeclock-when-to-leave-string) + +(provide 'local-planner) diff -r df7496e40bee -r a234a7579958 lisp/my-org.el --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lisp/my-org.el Thu Oct 13 08:46:42 2011 -0400 @@ -0,0 +1,5 @@ +(add-to-list 'auto-mode-alist '("\\.org$" . org-mode)) +(define-key global-map "\C-xL" 'org-store-link) +(define-key global-map "\C-xA" 'org-agenda) + +(provide 'my-org) \ No newline at end of file diff -r df7496e40bee -r a234a7579958 lisp/my-planner.el --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lisp/my-planner.el Thu Oct 13 08:46:42 2011 -0400 @@ -0,0 +1,227 @@ +;;;_ Planner configuration + +;; In emacs21/sarge, schedule doesn't exist. +;; But in planner-el/etch, schedule is in contrib. +(if (not (locate-library "schedule")) + (setcdr (last load-path) + '("/usr/share/emacs/site-lisp/planner-el/contrib"))) +(if (locate-library "schedule") + (require 'planner-timeclock)) +;(require 'planner-wl) +;(planner-wl-insinuate) +(require 'planner-diary) +(planner-diary-insinuate) +(require 'planner-export-diary) +(planner-calendar-insinuate) +(require 'planner-appt) +(planner-appt-use-tasks) +(planner-appt-insinuate) +(require 'planner-cyclic) +(planner-appt-schedule-cyclic-insinuate) +(planner-appt-calendar-insinuate) +(require 'planner-timeclock-summary) +(planner-timeclock-summary-insinuate) +(require 'planner-timeclock-summary-proj) +(planner-timeclock-summary-proj-insinuate) +(require 'planner-schedule) +(require 'planner-bbdb) +(require 'planner-erc) +(require 'planner-bookmark) +(require 'remember-planner) +(require 'planner-log-edit) +(planner-install-extra-task-keybindings) +(planner-install-extra-context-keybindings) +(require 'planner-trunk) +(require 'planner-multi) + +; Local functions for planner + +(defvar my-planner-week-summary-buffer + "Week-%Y-%U.muse") + +(defvar my-planner-week-summary-regexp + "Week-\\([0-9]{4}\\)-\\([0-5][0-9]\\)\\.muse") + +(defun first-day-of-the-week (date) + (progn + ;; (SEC MINUTE HOUR DAY MONTH YEAR DOW DST ZONE) + (setcar (nthcdr 3 date) + (- (elt date 3) + (elt date 6))) + (setcar (nthcdr 6 date) 0) + (apply 'encode-time date))) + +(defun last-day-of-the-week (date) + (progn + ;; (SEC MINUTE HOUR DAY MONTH YEAR DOW DST ZONE) + (setcar (nthcdr 3 date) + (+ (elt date 3) + (- 6 (elt date 6)))) + (setcar (nthcdr 6 date) 6) + (apply 'encode-time date))) + +(defun my-planner-file-to-date (filename) + (let ((calendar-date + (planner-filename-to-calendar-date filename))) + (decode-time (encode-time 0 0 0 (elt calendar-date 1) + (elt calendar-date 0) (elt calendar-date 2))))) + +(defun my-planner-week-summary (week-day) + (interactive (list (planner-read-date "Select a day of the week" t))) + (let ((date + (my-planner-file-to-date week-day))) + (planner-timeclock-summary-show-range + (planner-date-to-filename (first-day-of-the-week date)) + (planner-date-to-filename (last-day-of-the-week date))))) + +;;;_ redefinition of planner-maybe-remove-file +;; +;; The kill-buffer of this function make me crazy. I modify it so you +;; can change it's behavior using this custom variable. Personnaly, I +;; used ignore and let emacs ask me to save it when I kill it. Take +;; also note that I change the regexp to remove any file that only +;; have empty section (section with just a first level heading). This +;; is to cope with the new Events and Schedule sections. + +(defcustom planner-not-empty-file 'kill-this-buffer + "Command to run when a planner file is not empty. Can be +kill-this-buffer, save-buffer or ignore for example." + :type 'function + :group 'planner) + +(defvar local-planner-empty-line-regexp "\\(\\* .*\\|[[:space:]]*\\|No entries[[:space:]]*\\)") +(defvar planner-empty-file-regexp + (concat "\\(^" local-planner-empty-line-regexp + "\n\\)*[[:space:]]*\\'")) + +; redefinition + +(defun planner-maybe-remove-file () + "This function remove the file if it contains only first level +headings and empty lines." + (interactive) + (goto-char (point-min)) + (if (looking-at planner-empty-file-regexp) + (let ((filename buffer-file-name)) + (set-buffer-modified-p nil) + (kill-buffer (current-buffer)) + (delete-file filename)) + (funcall planner-not-empty-file))) + +;;;_ Planner automatic retrunl + +;; Should all been rework because planner-trunk just +;; look for Projects page. + +;; (defun my-planner-trunk-tasks-build-rules () +;; (let ((rule-set nil)) +;; (save-excursion +;; (save-restriction +;; (when (planner-narrow-to-section 'tasks) +;; (goto-char (point-min)) +;; (while (not (equal (point-max) (point))) +;; (let ((current-task (planner-task-description +;; (planner-current-task-info)))) +;; (if current-task +;; (if (string-match "|\\(.*\\)|" current-task) +;; (let ((category +;; (substring current-task +;; (match-beginning 1) +;; (match-end 1)))) +;; (add-to-list 'rule-set +;; (list (format "|%s|" category) +;; category)))))) +;; (forward-line))))) +;; rule-set)) + +;; (defun my-planner-trunk-tasks (&optional force) +;; (interactive "P") +;; (let ((page-name (planner-page-name))) +;; (if (not (catch 'done +;; (mapc (lambda (rule) +;; (if (string-match (car rule) page-name) +;; (if force +;; (progn +;; (delq rule planner-trunk-rule-list) +;; (throw 'done nil)) +;; (throw 'done t)))) +;; planner-trunk-rule-list) +;; nil)) +;; (add-to-list 'planner-trunk-rule-list +;; (list (regexp-quote (planner-page-name)) +;; nil (my-planner-trunk-tasks-build-rules)))) +;; (planner-trunk-tasks force))) + +;;;_ Planner replan + +;; Remember last day of plan so that it can go back correctly in time. + +(defcustom my-planner-last-replan-day (calendar-current-date) + "Last day plan." + :type '(list + (integer :tag "day") + (integer :tag "month") + (integer :tag "year"))) + +(defun my-planner-replan () + "Run plan with the last day checked." + (interactive) + (let ((current-date (calendar-current-date)) + (number-of-days 0)) + (setq number-of-days + (- (calendar-absolute-from-gregorian current-date) + (calendar-absolute-from-gregorian my-planner-last-replan-day))) + (if (> number-of-days 0) + (plan number-of-days)) + (customize-save-variable 'my-planner-last-replan-day current-date))) + +(defun my-planner-page-template (sections) + "Function to create a planner page." + (mapconcat (lambda (section) + (concat "* " section)) + sections "\n\n\n")) + +(defun my-planner-day-page-template () + "Function template to insert a planner day page." + (my-planner-page-template ["Évènements" "Tâches" "Rendez-vous" "Horaire" "Notes" "Activités"])) + +(defun my-planner-plan-page-template () + "Function template to insert a planner day page." + (my-planner-page-template ["Tâches" "Notes" "Rapport d'activités"])) + +;;;_ Set the diary export file + +;; Should have been used with a (get-planner-default-directory) too. + +(setq planner-export-diary-number-of-days 7 + diary-file "~/Plans/diary" + planner-export-diary-file "~/Plans/diary.planner") + +;; global key mapping + +(defvar my-planner-keymap + (let ((map (make-sparse-keymap))) + (mapcar + (lambda (args) + (apply (lambda (key symbol) + (define-key map key symbol)) args)) + '(("a" planner-create-task) + ("b" planner-create-task-from-buffer) + ("c" timeclock-change) + ("f" planner-appt-forthcoming-display) + ("p" planner-goto-plan-page) + ("i" timeclock-in) + ("j" planner-goto) + ("o" timeclock-out) + ("r" timeclock-reread-log) + ("s" planner-goto-today) + ("v" timeclock-status-string) + ("w" my-planner-week-summary) + ("x" planner-index))) + map) + "Global planner keymap I love to use.") + +(define-key ctl-x-map "t" my-planner-keymap) + +(provide 'my-planner) + diff -r df7496e40bee -r a234a7579958 lisp/my-python.el --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lisp/my-python.el Thu Oct 13 08:46:42 2011 -0400 @@ -0,0 +1,16 @@ +;; python-mode + +(autoload 'python-mode "python" "Python editing mode." t) +(require 'python) +(provide 'python-mode) + +;; pymacs +(autoload 'pymacs-load "pymacs" nil t) +(autoload 'pymacs-eval "pymacs" nil t) +(autoload 'pymacs-apply "pymacs") +(autoload 'pymacs-call "pymacs") + +(pymacs-load "bikeemacs" "brm-") +(brm-init) + +(provide 'my-python) diff -r df7496e40bee -r a234a7579958 lisp/my-shell.el --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lisp/my-shell.el Thu Oct 13 08:46:42 2011 -0400 @@ -0,0 +1,12 @@ +;;;_ EShell configuration + +(setenv "EDITOR" "gnuclient") +(setenv "VISUAL" "gnuclient") +(setenv "DEBIAN_FRONTEND" "editor") +(defun local-init-eshell () + "Local customization of eshell." + (defsubst eshell/make (&rest args) + "run make in lisp compile." + (compile (join (push "make" args) " ")))) + +(provide 'my-shell) \ No newline at end of file diff -r df7496e40bee -r a234a7579958 lisp/my-vc.el --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lisp/my-vc.el Thu Oct 13 08:46:42 2011 -0400 @@ -0,0 +1,22 @@ +;;;_ Version control + +(setq load-path + (cons "~/oss/emacs/lisp" + (cons "~/oss/emacs/lisp/psvn" + (cons "~/oss/emacs/lisp/svk" + load-path)))) + +(require 'vc-svk) +(require 'darcsum) +;(require 'dvc) +;(require 'vc-svn) +;(require 'vc-svk2) +(require 'psvn) +(require 'psvn-svk) + +(defalias 'svk-status 'svn-status) + +; Add by psvn-svk +;(add-to-list 'vc-handled-backends 'SVK) + +(provide 'my-vc) \ No newline at end of file