;;============================================================================== ;;; modes.el ;; ;;; Emacs Modes ;; ;;; Author: Kyle W T Sherman ;; ;; Time-stamp: <2008-07-30 17:28:30 (kyle)> ;;============================================================================== (message ";;; modes --> Start") ;;============================================================================== ;;; C Mode (c-mode and c++-mode) ;;============================================================================== (message ";;; modes --> C Mode") ;; c mode (custom-set-variables '(standard-indent 4) '(inverse-video t)) (custom-set-faces) ;; c hook (defconst local-c-style '((c-tab-always-indent . t) (c-basic-offset . 4) (c-comment-only-line-offset . 0) (c-hanging-braces-alist . ((substatement-open after) (brace-list-open))) (c-hanging-colons-alist . ((member-init-intro before) (inher-intro) (case-label after) (label after) (access-label after))) (c-cleanup-list . (scope-operator empty-defun-braces defun-close-semi)) (c-offsets-alist . ((arglist-close . c-lineup-arglist) (substatement-open . 0) (substatement-label . 0) (label . 0) (case-label . +) (block-open . 0) (defun-block-intro . +) (statement-block-intro . +) (substatement . +) (knr-argdecl-intro . -) (inline-open . 0) (defun-block-intro . 4))) (c-echo-syntactic-information-p . nil) )) ;; customizations for c-mode, c++-mode, objc-mode, java-mode, and idl-mode (defun local-c-mode-common-hook () ;; add my personal style and set it for the current buffer (c-add-style "local" local-c-style t) ;;(c-set-style 'stroustrup) ;; tab width (setq tab-width 4) ;; spaces are used instead of tabs (setq indent-tabs-mode nil) ;; auto-newline and hungry-delete turned off (c-toggle-auto-hungry-state nil) ;; keybindings for all supported languages ;; can put these in c-mode-base-map because c-mode-map, c++-mode-map, ;; objc-mode-map, java-mode-map, and idl-mode-map inherit from it (define-key c-mode-base-map [(control ret)] 'newline-and-indent) (define-key c-mode-base-map "\C-cc" 'mode-compile) (define-key c-mode-base-map "\C-ck" 'mode-compile-kill) (define-key c-mode-base-map [f7] 'mode-compile) ;; set default fill column for auto-fill mode and fill-paragraph (setq fill-column 78) ;; turn on auto-fill ;;(turn-on-auto-fill) ;; turn off auto newlines (setq c-auto-newline nil) ;; turn on flyspell (when (require-if-available 'flyspell) (flyspell-prog-mode)) ;; compilation settings (setq compile-command "make -k") (setq compilation-window-height 10) (setq compilation-ask-about-save nil) ;; (defadvice compile-internal (after my-scroll act comp) ;; "Forces compile buffer to scroll." ;; (let* ((ob (current-buffer)) ;; (obw (get-buffer-window ob t)) ;; win) ;; (save-excursion ;; (unless (and (setq win (get-buffer-window ad-return-value t)) ;; obw) ;; (select-window win) ;; (goto-char (point-max)) ;; (select-window obw) ;; )))) (setq compilation-scroll-output t) ;; turn on else minor mode ;;(else-mode) ;; ;; flymake mode ;; (when (require-if-available 'flymake-mode) ;; ;; turn on flymake mode ;; (flymake-mode t)) ) (add-hook 'c-mode-common-hook 'local-c-mode-common-hook) ;; remove trailing blanks ;;(add-hook 'c-mode-hook 'install-remove-trailing-blanks) ;;(add-hook 'c++-mode-hook 'install-remove-trailing-blanks) (add-hook 'c-mode-common-hook 'install-remove-trailing-blanks) ;; remove tabs ;;(add-hook 'c-mode-hook 'install-remove-tabs) ;;(add-hook 'c++-mode-hook 'install-remove-tabs) (add-hook 'c-mode-common-hook 'install-remove-tabs) ;; mode compile (smart compile) (when (require-if-available 'mode-compile) (autoload 'mode-compile "mode-compile" "Command to compile current buffer file based on the major mode" t) ;;(global-set-key "\C-cc" 'mode-compile) (autoload 'mode-compile-kill "mode-compile" "Command to kill a compilation launched by `mode-compile'" t) ;;(global-set-key "\C-ck" 'mode-compile-kill) ) ;;============================================================================== ;;; Calendar Mode (calendar-mode) ;;============================================================================== (message ";;; modes --> Calendar Mode") ;; calendar hook (defun local-calendar-load-hook () ;; star current date (setq today-visible-calendar-hook 'calendar-star-date) ;; star today's date (setq today-visible-calendar-hook 'calendar-mark-today) ;; mark holidays (setq mark-holidays-in-calendar t) ;; scrolling keys (define-key calendar-mode-map ">" 'scroll-calendar-left) (define-key calendar-mode-map "<" 'scroll-calendar-right) (define-key calendar-mode-map "\C-x>" 'scroll-calendar-left) (define-key calendar-mode-map "\C-x<" 'scroll-calendar-right) ) (add-hook 'calendar-load-hook 'local-calendar-load-hook) ;; calendar remind (when (require-if-available 'calendar-remind) (defun local-calendar-remind-load-hook () ;; remind lookup (define-key calendar-mode-map "\r" 'calendar-remind-lookup) (define-key calendar-mode-map "r" 'calendar-remind-lookup) ;;(define-key calendar-mode-map [(space)] 'calendar-remind-lookup) ;; remind visit (define-key calendar-mode-map "v" 'calendar-remind-visit) (define-key calendar-mode-map "V" 'calendar-remind-visit-insert) ) (add-hook 'calendar-load-hook 'local-calendar-remind-load-hook)) ;;============================================================================== ;;; Crypt Mode (crypt++) ;;============================================================================== ;; (message ";;; modes --> Crypt Mode") ;; ;; crypt++ (file encryption support) ;; (setq crypt-encryption-type 'crypt ;; crypt-encryption-file-extension "\\(Secure\\)$\\|\\(\\.enc\\)$" ;; crypt-bind-insert-file nil ;; crypt-freeze-vs-fortran nil) ;; (when (require-if-available 'crypt++) ;; (modify-coding-system-alist 'file "\\.bz\\'" 'no-conversion) ;; (modify-coding-system-alist 'file "\\.bz2\\'" 'no-conversion) ;; (modify-coding-system-alist 'file "\\.gpg\\'" 'no-conversion) ;; (modify-coding-system-alist 'file "\\.gz\\'" 'no-conversion) ;; (modify-coding-system-alist 'file "\\.Z\\'" 'no-conversion) ;; ;; redefine crypt-build-encryption-alist ;; (defun crypt-build-encryption-alist () ;; ;; Returns the encryption alist ;; (list ;; ;; crypt ;; (list 'crypt ;; crypt-encryption-magic-regexp crypt-encryption-magic-regexp-inverse ;; (or crypt-encryption-file-extension "\\.\\(e\\|enc\\)$") ;; "mcrypt" "mcrypt" ;; '("--algorithm" "enigma" "--mode" "stream" "--bare" "--quiet" "--key") ;; '("--decrypt" "--algorithm" "enigma" "--mode" "stream" "--bare" "--quiet" "--key") ;; "Crypt" ;; nil ;; t ;; ) ;; ;; DES (Cipher Block Chaining - CBC) [DES' default] ;; (list 'des ;; crypt-encryption-magic-regexp crypt-encryption-magic-regexp-inverse ;; (or crypt-encryption-file-extension "\\(\\.des\\)$") ;; "mcrypt" "mcrypt" ;; '("--bzip2" "--algorithm" "des" "--keymode" "pkdes" "--bare" "--force" "--quiet" "--key") ;; '("--decrypt" "--bzip2" "--algorithm" "des" "--keymode" "pkdes" "--bare" "--force" "--quiet" "--key") ;; "DES" ;; nil ;; t ;; ) ;; ;; DES (Electronic Code Book - ECB) ;; (list 'des-ecb ;; crypt-encryption-magic-regexp crypt-encryption-magic-regexp-inverse ;; (or crypt-encryption-file-extension "\\(\\.des\\)$") ;; "des" "des" ;; '("-e" "-b" "-k") ;; '("-d" "-b" "-k") ;; "DES-ECB" ;; nil ;; t ;; ) ;; ;; PGP ;; (list 'pgp ;; crypt-encryption-magic-regexp crypt-encryption-magic-regexp-inverse ;; (or crypt-encryption-file-extension "\\(\\.pgp\\)$") ;; "pgp" "pgp" ;; '("+batchmode" "+verbose=0" "-c" "-f" "-z") ;; '("+batchmode" "+verbose=0" "-f" "-z") ;; "PGP" ;; nil ;; t ;; ) ;; ;; Add new elements here ... ;; )) ;; ) ;;============================================================================== ;;; Erlang Mode (erlang-mode) ;;============================================================================== (message ";;; modes --> Erlang Mode") ;; erlang-mode ;;(add-to-list 'load-path "/usr/lib/erlang/lib/tools-2.5.4/emacs/") (add-to-list 'load-path "~/.elisp/erlang") (add-to-list 'exec-path "/usr/lib/erlang/bin") (setq erlang-root-dir "/usr/lib/erlang") (setq erlang-electric-commands nil) (require-if-available 'erlang-start) ;; erlang hook (defun local-erlang-hook () ;; turn on flyspell (when (require-if-available 'flyspell) (flyspell-prog-mode)) ) (add-hook 'erlang-hook 'local-erlang-hook) ;; remove trailing blanks (add-hook 'erlang-mode-hook 'install-remove-trailing-blanks) ;; remove tabs (add-hook 'erlang-mode-hook 'install-remove-tabs) ;;============================================================================== ;;; Fundamental Mode (fundamental-mode) ;;============================================================================== (message ";;; modes --> Fundamental Mode") ;; fundamental-mode ;; remove trailing blanks (add-hook 'fundamental-mode-hook 'install-remove-trailing-blanks) ;; remove tabs (add-hook 'fundamental-mode-hook 'install-remove-tabs) ;;============================================================================== ;;; GPG Mode (file encryption) ;;============================================================================== ;; (message ";;; modes --> GPG Mode") ;; (when (>= emacs-major-version 21) ;; (defvar pgg-gpg-user-id "kyle") ;; (autoload 'pgg-make-temp-file "pgg" "PGG") ;; (autoload 'pgg-gpg-decrypt-region "pgg-gpg" "PGG GnuPG") ;; (define-generic-mode 'gpg-file-mode ;; (list ?#) ;; nil nil ;; '(".gpg\\'" ".gpg-encrypted\\'") ;; (list (lambda () ;; (add-hook 'before-save-hook ;; (lambda () ;; (let ((pgg-output-buffer (current-buffer))) ;; (pgg-gpg-encrypt-region (point-min) (point-max) ;; (list pgg-gpg-user-id)))) ;; nil t) ;; (add-hook 'after-save-hook ;; (lambda () ;; (let ((pgg-output-buffer (current-buffer))) ;; (pgg-gpg-decrypt-region (point-min) (point-max))) ;; (set-buffer-modified-p nil) ;; (auto-save-mode nil)) ;; nil t) ;; (let ((pgg-output-buffer (current-buffer))) ;; (pgg-gpg-decrypt-region (point-min) (point-max))) ;; (auto-save-mode nil) ;; (set-buffer-modified-p nil))) ;; "Mode for gpg encrypted files.") ;; ) ;;============================================================================== ;;; HTML Mode (html-mode) ;;============================================================================== ;; (message ";;; modes --> HTML Mode") ;; ;; html-mode ;; ;;(when (require-if-available 'html-mode) ;; (autoload 'html-mode "html-mode" "HTML editing mode." t) ;; ;; set modes for various extensions ;; (add-to-list 'auto-mode-alist '("\\.html$" . html-mode)) ;; (add-to-list 'auto-mode-alist '("\\.htm$" . html-mode)) ;; ;;(add-to-list 'auto-mode-alist '("\\.xhtml$" . html-mode)) ;; ;;(add-to-list 'auto-mode-alist '("\\.css$" . html-mode)) ;; (add-to-list 'auto-mode-alist '("\\.cfm$" . html-mode)) ;; (add-to-list 'auto-mode-alist '("\\.asp$" . html-mode)) ;; ;;(add-to-list 'auto-mode-alist '("\\.aspx$" . html-mode)) ;; ;; ;; turn on abbreviation mode ;; ;; (abbrev-mode t) ;; ;; remove trailing blanks ;; (add-hook 'html-mode-hook 'install-remove-trailing-blanks) ;; ;; remove tabs ;; (add-hook 'html-mode-hook 'install-remove-tabs) ;; ;; ) ;; ;; html-helper-mode ;; (when (require-if-available 'html-helper-mode) ;; (autoload 'html-helper-mode "html-helper-mode" "HTML editing mode." t) ;; ;; set modes for various extensions ;; (add-to-list 'auto-mode-alist '("\\.html$" . html-helper-mode)) ;; (add-to-list 'auto-mode-alist '("\\.htm$" . html-helper-mode)) ;; ;;(add-to-list 'auto-mode-alist '("\\.xhtml$" . html-helper-mode)) ;; ;;(add-to-list 'auto-mode-alist '("\\.css$" . html-helper-mode)) ;; (add-to-list 'auto-mode-alist '("\\.cfm$" . html-helper-mode)) ;; (add-to-list 'auto-mode-alist '("\\.asp$" . html-helper-mode)) ;; ;;(add-to-list 'auto-mode-alist '("\\.aspx$" . html-helper-mode)) ;; (defun local-html-helper-mode-hook () ;; ;; tag-region ;; (defun tag-region (b e el) ;; "Put \"<el>...</el>\" around text." ;; (let ((tb (concat "<" el ">")) ((te (concat "</" el ">"))) ;; (insert-string ;; (concat tb (delete-and-extract-region b e) te)) ;; (goto-char (- (point) (+ (length te) (- e b))))))) ;; ;; tag-region-or-point ;; (defun tag-region-or-point (el) ;; "Tag the region, or the point if there is no region." ;; (unless mark-active ;; (set-mark (point))) ;; (tag-region (region-beginning) (region-end) el)) ;; ;; set key bindings ;; (local-set-key "\C-cb" '(tag-region-or-point "b")) ;; (local-set-key "\C-ci" '(tag-region-or-point "i")) ;; (local-set-key "\C-ce" '(tag-region-or-point "em")) ;; (local-set-key "\C-cs" '(tag-region-or-point "strong")) ;; (local-set-key "\C-cu" '(tag-region-or-point "u")) ;; (local-set-key "\C-c-" '(tag-region-or-point "strike")) ;; (local-set-key "\C-ct" '(tag-region-or-point "tt")) ;; (local-set-key "\C-cp" '(tag-region-or-point "pre")) ;; ) ;; (add-hook 'html-helper-mode-hook 'local-html-helper-mode-hook) ;; ) ;;============================================================================== ;;; Java Mode (java-mode) (jde-mode) ;;============================================================================== (message ";;; modes --> Java Mode") ;; jde-mode (add-to-list 'load-path "~/.elisp/cedet") (add-to-list 'load-path "~/.elisp/cedet/cogre") (add-to-list 'load-path "~/.elisp/cedet/common") (add-to-list 'load-path "~/.elisp/ede") (add-to-list 'load-path "~/.elisp/eieio") (add-to-list 'load-path "~/.elisp/semantic") (add-to-list 'load-path "~/.elisp/speedbar") (add-to-list 'load-path "~/.elisp/elib") (add-to-list 'load-path "~/.elisp/jde/lisp") (when (require-if-available 'jde) ;;(autoload 'java-mode "java-mode" "Java editing mode." t) (autoload 'jde-mode "jde-mode" "Java editing mode." t) ;; set modes for various extensions ;; (add-to-list 'auto-mode-alist '("\\.java$" . java-mode)) ;; (add-to-list 'auto-mode-alist '("\\.jml$" . java-mode)) ;; (add-to-list 'auto-mode-alist '("\\.mj$" . java-mode)) (add-to-list 'auto-mode-alist '("\\.java$" . jde-mode)) (add-to-list 'auto-mode-alist '("\\.jml$" . jde-mode)) (add-to-list 'auto-mode-alist '("\\.mj$" . jde-mode)) ;; turn debugging on when errors occur ;;(setq debug-on-error t) ;; pretty formatting ;;(require-if-available 'hilit-java) ;; ;; camel case ;; (when (require-if-available 'camelCase) ;; (autoload 'camelCase "camelCase" nil t) ;; (defun local-jde-mode-hook () ;; (camelCase-mode 1) ;; (local-set-key "\M-backspace" 'camelCase-backward-kill-word)) ;; (add-hook 'jde-mode-hook 'local-jde-mode-hook 'append)) ;; initialize cedet ;;(add-to-list 'load-path "~/.elisp/cedet") ;;(add-to-list 'load-path "~/.elisp/cedet/cogre") ;;(add-to-list 'load-path "~/.elisp/cedet/common") (require-if-available 'cedet) ;; initialize semantic (require-if-available 'semantic-load) (global-semanticdb-minor-mode -1) ;;(setq semantic-load-turn-useful-things-on t) ;; initialize eldoc ;;(add-to-list 'load-path "~/.elisp/elib") (require-if-available 'eldoc) ;; increase the limit on number of lisp variable bindings and ;; unwind-protects; allows semantic to parse more complex java files ;;(setq max-specpdl-size 1080) ;; turn on flyspell (when (require-if-available 'flyspell) (add-hook 'java-mode-hook 'flyspell-prog-mode)) ;; ;; flymake mode ;; (when (require-if-available 'flymake-mode) ;; ;; turn on flymake mode ;; (flymake-mode t)) ;; remove trailing blanks (add-hook 'java-mode-hook 'install-remove-trailing-blanks) (add-hook 'jde-mode-hook 'install-remove-trailing-blanks) ;; remove tabs (add-hook 'java-mode-hook 'install-remove-tabs) (add-hook 'jde-mode-hook 'install-remove-tabs) ;; set jde variables (setq jde-ant-home "/usr/bin/ant") (setq jde-ant-buildfile "build.xml") (setq jde-build-function (quote (jde-ant-build))) (setq jde-check-version-flag nil) (setq jde-debugger (quote ("jdb"))) ;; (setq jde-global-classpath (quote ( ;; "/usr/share/java/log4j-1.2.12.jar" ;; "/opt/GigaSpacesEE/lib/jini/tools.jar" ;; "/opt/GigaSpacesEE/lib/jini/jsk-lib.jar" ;; "/opt/GigaSpacesEE/lib/jini/jsk-platform.jar" ;; "/opt/GigaSpacesEE/lib/JSpaces.jar" ;; "./bin" "./lib" "./src" "./classes" "./config"))) ;; (setq jde-jdk-registry (quote (("1.5" . "/usr/lib/jvm/java-1.5.0-sun") ;; ("5.0" . "/usr/lib/jvm/java-1.5.0-sun") ;; ("1.6" . "/usr/lib/jvm/java-6-sun") ;; ("6.0" . "/usr/lib/jvm/java-6-sun")))) (setq jde-jdk-registry (quote (("1.5" . "/usr/lib/jvm/java-6-sun")))) (setq jde-jdk (quote ("1.5"))) (setq quack-default-program "csi -:c") (setq quack-run-scheme-always-prompts-p nil) ;;(setq save-place t nil (saveplace)) ;;(setq tool-bar-mode nil nil (tool-bar))) ;;(setq jde-enable-abbrev-mode t) ;;(setq jde-complete-function 'jde-complete-menu) (setq jde-complete-function 'jde-complete-minibuf) ;;(setq jde-complete-function 'jde-complete-in-line) ;; turn on else minor mode ;;(add-hook 'java-mode-hook 'else-mode) ) ;;============================================================================== ;;; Lisp Mode (lisp-mode and emacs-lisp-mode) ;;============================================================================== (message ";;; modes --> Lisp Mode") ;; set mode for various extensions ;;(add-to-list 'auto-mode-alist '("\\.el$" . lisp-mode)) (add-to-list 'auto-mode-alist '("\\.el$" . emacs-lisp-mode)) (add-to-list 'auto-mode-alist '("\\.lisp$" . lisp-mode)) ;; lisp hook for more settings (defun local-lisp-mode-hook () ;; clear input method ;;(set-input-method nil) ;; set indent to 2 spaces ;;(setq lisp-indent-offset 2) ;; add underscore and dash to word boundaries (modify-syntax-entry ?_ "w" lisp-mode-syntax-table) (modify-syntax-entry ?- "w" lisp-mode-syntax-table) ;; map return key to `newline-and-indent' (local-set-key [(ret)] 'newline-and-indent) ;; turn on flyspell (when (require-if-available 'flyspell) (flyspell-prog-mode)) ;; ;; turn on abbreviation mode ;; (abbrev-mode t) ;; turn on else minor mode ;;(else-mode) ) ;; add hook to emacs-lisp and lisp modes (add-hook 'emacs-lisp-mode-hook 'local-lisp-mode-hook) (add-hook 'lisp-mode-hook 'local-lisp-mode-hook) ;; remove trailing blanks (add-hook 'emacs-lisp-mode-hook 'install-remove-trailing-blanks) (add-hook 'lisp-mode-hook 'install-remove-trailing-blanks) ;; remove tabs (add-hook 'emacs-lisp-mode-hook 'install-remove-tabs) (add-hook 'lisp-mode-hook 'install-remove-tabs) ;; slime (superior lisp interaction mode for emacs) (add-to-list 'load-path "~/.elisp/slime") ;;(add-to-list 'load-path "/usr/share/common-lisp/source/slime/") ;; if loading slime errors out because swank-loader.lisp is not found, do: ;; # cd /usr/share/emacs22/site-lisp/slime ;; # for i in $(ls -1 /usr/share/common-lisp/source/slime/) ; do ln -s /usr/share/common-lisp/source/slime/$i ; done (when (require-if-available 'slime) (autoload 'slime-mode "slime-mode" "Slime editing mode." t) ;; slime setup ;;(slime-setup) ;; set lisp program to clisp (setq inferior-lisp-program "clisp -K full") ;; evaluate current sexp (defun slime-eval-sexp () "Slime evaluate current sexp." (interactive) (save-excursion (end-of-defun) (slime-interactive-eval (slime-last-expression)))) ;; run slime setup (this does too much) ;;(slime-setup) ;; run custom version of slime setup to preserve lisp-indent-function (defun local-slime-lisp-mode-hook () (slime-mode t) ;; auto documentation (slime-autodoc-mode t) ;; typeout frame ;;(add-hook 'slime-connected-hook 'slime-ensure-typeout-frame) ;; highlight edits ;;(add-hook 'slime-mode-hook 'slime-highlight-edits-mode) (define-key slime-mode-map "\C-x\C-e" 'slime-eval-sexp) ;; start inferior lisp job ;;(unless (comint-check-proc "*inferior-lisp*") ;; (let ((buffer (current-buffer))) ;; (slime) ;; (switch-to-buffer buffer) ;; )) ;; ;; auto connect to slime ;; (unless (slime-connected-p) ;; (save-excursion (slime))) ) (add-hook 'lisp-mode-hook 'local-slime-lisp-mode-hook) ;; cldoc (common lisp info in mini-buffer) (autoload 'turn-on-cldoc-mode "cldoc" nil t) (add-hook 'lisp-mode-hook 'turn-on-cldoc-mode) ;; wait 3 seconds before showing mini-buffer docs (setq cldoc-idle-delay 3) ) ;; load slime-mode when lisp-mode is loaded ;(add-hook 'lisp-mode-hook (lambda () (slime-mode))) ;;============================================================================== ;;; Makefile Mode (make-mode) ;;============================================================================== (message ";;; modes --> Makefile Mode") ;; C/C++ Makefile mode (when (require-if-available 'make-mode) (autoload 'make-mode "makefile" "Makefile editing mode." t) ;; set mode for various extensions (add-to-list 'auto-mode-alist '("Makefile" . makefile-mode)) ;; remove trailing blanks (add-hook 'auto-mode-hook 'install-remove-trailing-blanks) ) ;;============================================================================== ;;; Muse Mode (muse-mode) ;;============================================================================== (message ";;; modes --> Muse Mode") ;; authoring and publishing environment (defconst muse-init-file "~/web/bin/muse-init.el") (add-to-list 'load-path "~/.elisp/muse/lisp") (when (require-if-available 'muse-mode) ;; call external muse initialization script in web project (when (file-exists-p muse-init-file) (safe-load muse-init-file))) ;; planner (the emacs planner) (add-to-list 'load-path "~/.elisp/planner") (require-if-available 'planner) (require-if-available 'planner-multi) (when (require-if-available 'planner-publish) (planner-option-customized 'planner-directory "~/plans") ;; (planner-option-customized 'planner-publishing-directory ;; "~/public_html/plans") (setq planner-carry-tasks-forward t) (define-key mode-specific-map [?n] 'planner-goto-today)) ;; planner-calendar (integrate planner with the calendar) (when (require-if-available 'calendar) ;;(load-library "planner-calendar") ;;(load-library "cal-desk-calendar") (require-if-available 'planner-calendar) (require-if-available 'cal-desk-calendar) (when (and (load "planner-calendar" t) (load "cal-desk-calendar" t)) (add-hook 'diary-display-hook 'sort-diary-entries) (add-hook 'diary-display-hook 'fancy-schedule-display-desk-calendar t))) ;; remember (mode for quickly jotting down things to remember) ;;(autoload 'remember "remember" nil t) ;;(autoload 'remember-region "remember" nil t) (add-to-list 'load-path "~/.elisp/remember") (require-if-available 'remember) (when (require-if-available 'remember-planner) (setq remember-handler-functions '(remember-planner-append)) (setq remember-annotation-functions planner-annotation-functions)) ;;============================================================================== ;;; Org Mode (org-mode) ;;============================================================================== (message ";;; modes --> Org Mode") ;; org (advanced outline mode) (add-to-list 'load-path "~/.elisp/org") (when (require-if-available 'org) (autoload 'org-mode "org" "Org mode." t) (autoload 'org-diary "org" "Diary entries from Org mode.") ;; set mode for various extensions (add-to-list 'auto-mode-alist '("\\.org$" . org-mode)) ;;(add-to-list 'auto-mode-alist '("\\.org\\.enc$" . org-mode)) (add-to-list 'auto-mode-alist '("\\.org\\.cpt$" . org-mode)) ;; set default directory and file (setq org-directory "~/org/") (setq org-default-notes-file "~/.notes") ;; hide leading stars (setq org-hide-leading-stars t) ;; skip levels (setq org-odd-levels-only t) ;; remember settings ;;(setq remember-handler-functions '(org-remember-handler)) ;;(setq remember-annotation-functions '(org-remember-annotation)) ;;(add-hook 'remember-mode-hook 'org-remember-apply-template) ;; org hook (defun local-org-mode-hook () ;; key bindings (local-set-key [(control ?c) (control return)] 'org-insert-heading) ;;(local-set-key "\C-cl" 'org-store-link) ;;(local-set-key "\C-ca" 'org-agenda) ;; turn off auto-fill mode (turn-off-auto-fill) ;; ;; turn on longlines mode ;; (longlines-mode) ;; turn off auto-save mode (auto-save-mode nil)) (add-hook 'org-mode-hook 'local-org-mode-hook) ;; sort current level (defun org-sort-current (&optional with-case sorting-type) "Sort the current org level." (interactive) (when (equal mode-name "Org") (unless sorting-type (setq sorting-type ?a)) (save-excursion (outline-up-heading 1) (let ((start (point)) end) (while (and (not (bobp)) (not (eobp)) (<= (point) start)) (condition-case nil (outline-forward-same-level 1) (error (outline-up-heading 1)))) (unless (> (point) start) (goto-char (point-max))) (setq end (point)) (goto-char start) (org-sort-entries with-case sorting-type) (goto-char end) (when (eobp) (forward-line -1)) (when (looking-at "^\\s-*$") (delete-line)) )))) ;; key to sort current level (define-key org-mode-map "\C-cs" 'org-sort-current) ) ;;============================================================================== ;;; Perl Mode (cperl-mode) ;;============================================================================== (message ";;; modes --> Perl Mode") (when (require-if-available 'cperl-mode) (autoload 'cperl-mode "cperl-mode" "Perl editing mode." t) ;; set mode for various extensions (add-to-list 'auto-mode-alist '("\\.\\([pP][Llm]\\|al\\)\\'" . cperl-mode)) (add-to-list 'interpreter-mode-alist '("perl" . cperl-mode)) (add-to-list 'interpreter-mode-alist '("perl5" . cperl-mode)) (add-to-list 'interpreter-mode-alist '("miniperl" . cperl-mode)) ;; perl hook (defun local-cperl-mode-hook () ;; configure some options (setq cperl-indent-level 4) (setq cperl-continued-statement-offset 0) ;; turn on flyspell (when (require-if-available 'flyspell) (flyspell-prog-mode)) ) (add-hook 'cperl-mode-hook 'local-cperl-mode-hook) ;; determine if file is a perl script and switch to cperl-mode if it is (defun cperl-mode-maybe () (interactive) (save-excursion (save-match-data (goto-char (point-min)) (when (or (search-forward "#!/usr/bin/perl" (point-at-eol) t) (search-forward "#!/usr/bin/env perl" (point-at-eol) t)) (cperl-mode))))) ;; run when a file is loaded (add-hook 'find-file-hooks 'cperl-mode-maybe) ;; remove trailing blanks (add-hook 'cperl-mode-hook 'install-remove-trailing-blanks) ;; remove tabs (add-hook 'cperl-mode-hook 'install-remove-tabs) ) ;;============================================================================== ;;; Python Mode (python-mode) ;;============================================================================== (message ";;; modes --> Python Mode") ;; python-mode (when (require-if-available 'python) (autoload 'python-mode "python-mode" "Python editing mode." t) ;; set mode for various extensions ;(add-to-list 'auto-mode-alist '("\\.py$" . python-mode)) ;(add-to-list 'auto-mode-alist '("\\.python$" . python-mode)) ;; python hook (defun local-python-mode-hook () ;; set indent (setq python-indent 4) ) (add-hook 'python-mode-hook 'local-python-mode-hook)) ;;============================================================================== ;;; Ruby Mode (ruby-mode) ;;============================================================================== (message ";;; modes --> Ruby Mode") ;; ruby-mode (when (require-if-available 'ruby-mode) (autoload 'ruby-mode "ruby-mode" "Ruby editing mode." t) ;; set mode for various extensions (add-to-list 'auto-mode-alist '("\\.rb$" . ruby-mode)) (add-to-list 'auto-mode-alist '("\\.rhtml$" . ruby-mode)) ;; ruby hook (defun local-ruby-mode-hook () ;; configure some options ;;(setq ruby-indent-level 4) (setq ruby-indent-level 2) (define-key ruby-mode-map "\r" 'ruby-reindent-then-newline-and-indent) ;; turn on flyspell (when (require-if-available 'flyspell) (flyspell-prog-mode)) ) (add-hook 'ruby-mode-hook 'local-ruby-mode-hook t) ;; ;; turn on syntax highlighting (actually turns of syntax highlighting) ;; (add-hook 'ruby-mode-hook 'turn-on-font-lock) ;; ;; ruby-electric (auto closing tags) ;; (require-if-available 'ruby-electric) ;; (add-hook 'ruby-mode-hook 'ruby-electric-mode) ;; (setq ruby-electric-mode nil) ;; inf-ruby ??? (when (require-if-available 'inf-ruby) (setq interpreter-mode-alist (append '(("ruby" . ruby-mode)) interpreter-mode-alist)) (autoload 'run-ruby "inf-ruby" "Run an inferior Ruby process.") (autoload 'inf-ruby-keys "inf-ruby" "Set local key defs for inf-ruby in ruby-mode.") (add-hook 'ruby-mode-hook '(lambda () (inf-ruby-keys)))) ;; ;; turn on abbreviation mode ;; (abbrev-mode t) ;; determine if file is a ruby script and switch to ruby-mode if it is (defun ruby-mode-maybe () (interactive) (save-excursion (save-match-data (goto-char (point-min)) (when (or (search-forward "#!/usr/bin/ruby" (point-at-eol) t) (search-forward "#!/usr/bin/env ruby" (point-at-eol) t)) (ruby-mode))))) ;; run when a file is loaded (add-hook 'find-file-hooks 'ruby-mode-maybe) ;; remove trailing blanks (add-hook 'ruby-mode-hook 'install-remove-trailing-blanks) ;; remove tabs (add-hook 'ruby-mode-hook 'install-remove-tabs) ) ;;============================================================================== ;;; SH Mode (sh-mode) ;;============================================================================== (message ";;; modes --> SH Mode") ;; sh-mode (when (require-if-available 'sh-script) (autoload 'sh-mode "sh-mode" "Shell editing mode." t) ;; set mode for various extensions (add-to-list 'auto-mode-alist '("\\.sh$" . sh-mode)) (add-to-list 'auto-mode-alist '("\\.shell$" . sh-mode)) (add-to-list 'auto-mode-alist '("\\.bash$" . sh-mode)) ;; using mode for ldif and schema files (add-to-list 'auto-mode-alist '("\\.ldif$" . sh-mode)) (add-to-list 'auto-mode-alist '("\\.schema$" . sh-mode)) ;; using mode for remind files (add-to-list 'auto-mode-alist '("\\.reminders$" . sh-mode)) (add-to-list 'auto-mode-alist '("^reminders_" . sh-mode)) ;; make comment lines indent (setq sh-indent-comment t) ;; determine if file is a shell script and switch to sh-mode if it is (defun sh-mode-maybe () (interactive) (save-excursion (save-match-data (goto-char (point-min)) (when (or (search-forward "#!/bin/sh" (point-at-eol) t) (search-forward "#!/bin/bash" (point-at-eol) t) (search-forward "#!/bin/csh" (point-at-eol) t) (search-forward "#!/bin/tsh" (point-at-eol) t) (search-forward "#!/usr/bin/env sh" (point-at-eol) t) (search-forward "#!/usr/bin/env bash" (point-at-eol) t) (search-forward "#!/usr/bin/env csh" (point-at-eol) t) (search-forward "#!/usr/bin/env tsh" (point-at-eol) t) (search-forward "#=========" (point-at-eol) t) (search-forward "#---------" (point-at-eol) t)) (sh-mode))))) ;; run when a file is loaded (add-hook 'find-file-hooks 'sh-mode-maybe) ;; remove trailing blanks (add-hook 'sh-mode-hook 'install-remove-trailing-blanks) ;; remove tabs (add-hook 'sh-mode-hook 'install-remove-tabs) ) ;;============================================================================== ;;; SQL Mode (sql-mode) ;;============================================================================== (message ";;; modes --> SQL Mode") ;; sql (when (require-if-available 'sql) (autoload 'sql-mode "sql-mode" "SQL editing mode." t) ;; set modes for various extensions (add-to-list 'auto-mode-alist '("\\.sql$" . sql-mode)) (add-to-list 'auto-mode-alist '("\\.tbl$" . sql-mode)) (add-to-list 'auto-mode-alist '("\\.sp$" . sql-mode)) ;; mysql (require-if-available 'mysql) (setq sql-product 'mysql) ;; tsql ;;(require-if-available 'tsql) ;; sql-transform (when (require-if-available 'sql-transform) (defun local-sql-mode-hook () (local-set-key "\C-cs" 'sql-to-select) (local-set-key "\C-ci" 'sql-to-insert) (local-set-key "\C-cu" 'sql-to-update) (local-set-key "\C-cd" 'sql-to-delete) ) (add-hook 'sql-mode-hook 'local-sql-mode-hook) ) ;; ;; turn on abbreviation mode ;; (abbrev-mode t) ;; remove trailing blanks (add-hook 'sql-mode-hook 'install-remove-trailing-blanks) ;; remove tabs (add-hook 'sql-mode-hook 'install-remove-tabs) ;; add databases ) ;;============================================================================== ;;; Text Mode (text-mode) ;;============================================================================== (message ";;; modes --> Text Mode") (when (load "text-mode" t) (autoload 'sql-text "text-mode" "Text editing mode." t) ;; set modes for various extensions (add-to-list 'auto-mode-alist '("\\.txt$" . text-mode)) (add-to-list 'auto-mode-alist '("\\.text$" . text-mode)) (add-to-list 'auto-mode-alist '("README" . text-mode)) (add-to-list 'auto-mode-alist '("INSTALL" . text-mode)) (add-to-list 'auto-mode-alist '("CHANGELOG" . text-mode)) (defun local-text-mode-hook () ;; set tab ;; (setq tab-width 4) ;; (setq-default tab-stop-list ;; '(4 8 12 16 20 24 28 32 36 40 44 48 52 56 60 64 68 72 76)) (setq tab-width 8) (setq-default tab-stop-list '(8 16 24 32 40 48 56 64 72 76)) (setq indent-tabs-mode t) (define-key text-mode-map [(tab)] 'indent-relative) ;; set default fill column for auto-fill mode (setq fill-column 78) ;; turn on word wrap (turn-on-auto-fill) ;; add underscore and dash to word boundaries (modify-syntax-entry ?_ "w" text-mode-syntax-table) (modify-syntax-entry ?- "w" text-mode-syntax-table) ;; turn on flyspell (when (require-if-available 'flyspell) (flyspell-mode t)) ;; ;; turn on abbreviation mode ;; (abbrev-mode t) ;; turn on pabbrev mode ;;(pabbrev-mode) ;; insert two spaces after a sentence (setq sentence-end-double-space t) ;; insert two spaces after a colon (setq colon-double-space t) ) (add-hook 'text-mode-hook 'local-text-mode-hook) ;; remove trailing blanks (add-hook 'text-mode-hook 'install-remove-trailing-blanks) ;; remove tabs (add-hook 'text-mode-hook 'install-remove-tabs) ) ;;============================================================================== ;;; XML Mode (xml-mode) ;;============================================================================== ;; (message ";;; modes --> XML Mode") ;; (add-to-list 'load-path "~/.elisp/psgml") ;; (load "~/.elisp/psgml/psgml.el") ;; (autoload 'sgml-mode "psgml" "SGML editing mode." t) ;; (autoload 'xml-mode "psgml" "XML editing mode." t) ;; (require-if-available 'sgml-mode) ;; (when (load "sgml-mode" t) ;; ;; setup catalog files ;; (setq sgml-catalog-files nil) ;; (add-to-list 'sgml-catalog-files "~/dtd/xhtml1/xhtml1.soc") ;; (add-to-list 'sgml-catalog-files "~/dtd/dita/dtd/dita.soc") ;; (add-to-list 'sgml-catalog-files "~/dtd/hodmacro/hodmacro.soc") ;; ;; set modes for various extensions ;; (add-to-list 'auto-mode-alist '("\\.sgml$" . sgml-mode)) ;; (add-to-list 'auto-mode-alist '("\\.idd$" . sgml-mode)) ;; (add-to-list 'auto-mode-alist '("\\.ide$" . sgml-mode)) ;; ;;(add-to-list 'auto-mode-alist '("\\.htm$" . xml-mode)) ;; ;;(add-to-list 'auto-mode-alist '("\\.html$" . xml-mode)) ;; (add-to-list 'auto-mode-alist '("\\.xhtml$" . xml-mode)) ;; (add-to-list 'auto-mode-alist '("\\.xml$" . xml-mode)) ;; (add-to-list 'auto-mode-alist '("\\.xsl$" . xml-mode)) ;; (add-to-list 'auto-mode-alist '("\\.fo$" . xml-mode)) ;; (add-to-list 'auto-mode-alist '("\\.rdf$" . xml-mode)) ;; (add-to-list 'auto-mode-alist '("\\.rss$" . xml-mode)) ;; ;; sgml mode hook ;; (defun local-sgml-mode-hook () ;; ;; create faces to assign to markup categories ;; (make-face 'sgml-comment-face) ;; (make-face 'sgml-start-tag-face) ;; (make-face 'sgml-end-tag-face) ;; ;; assign attributes to faces ;; (set-face-foreground 'sgml-comment-face "SeaGreen") ;; (set-face-foreground 'sgml-start-tag-face "OrangeRed") ;; (set-face-foreground 'sgml-end-tag-face "OrangeRed") ;; ;; assign faces to markup categories ;; (setq sgml-markup-faces ;; '((comment . sgml-comment-face) ;; (start-tag . sgml-start-tag-face) ;; (end-tag . sgml-end-tag-face))) ;; ;; use the face settings ;; (setq sgml-set-face t) ;; ;; only allow valid elements to be inserted ;; (setq sgml-omittag-transparent t) ;; ;; automatically insert required elements ;; (setq sgml-auto-insert-required-elements t) ;; ;; enable abbreviations ;; ;;(setq-default abbrev-mode t) ;; ;;(read-abbrev-file "~/.abbrev_defs") ;; ;;(setq save-abbrevs t) ;; ) ;; (add-hook 'sgml-mode-hook 'local-sgml-mode-hook) ;; ;;(make-face 'sgml-comment-face) ;; ;;(make-face 'sgml-start-tag-face) ;; ;;(make-face 'sgml-end-tag-face) ;; ;;(make-face 'sgml-entity-face) ;; ;;(make-face 'sgml-doctype-face) ;; ;;(set-face-foreground 'sgml-comment-face "FireBrick") ;; ;;(set-face-foreground 'sgml-start-tag-face "SlateBlue") ;; ;;(set-face-foreground 'sgml-end-tag-face "SlateBlue") ;; ;;(set-face-background 'sgml-entity-face "SlateBlue") ;; ;;(set-face-foreground 'sgml-entity-face "Red") ;; ;;(set-face-foreground 'sgml-doctype-face "FireBrick") ;; ;;(setq sgml-set-face t) ;; ;;(setq sgml-markup-faces ;; ;; '((comment . sgml-comment-face) ;; ;; (start-tag . sgml-start-tag-face) ;; ;; (end-tag . sgml-end-tag-face) ;; ;; (doctype . sgml-doctype-face) ;; ;; (entity . sgml-entity-face))) ;; ;; ;; turn on abbreviation mode ;; ;; (abbrev-mode t) ;; ) ;;============================================================================== ;;; XML Mode (nxml-mode) ;;============================================================================== (message ";;; modes --> XML Mode") ;; nxml (nxml-mode) (add-to-list 'load-path "~/.elisp/nxml-mode") (require-if-available 'nxml-mode) (when (load "nxml-mode" t) (autoload 'nxml-mode "nxml-mode" "XML editing mode." t) ;; set mode for various extensions (add-to-list 'auto-mode-alist '("\\.dtd$" . nxml-mode)) ;;(add-to-list 'auto-mode-alist '("\\.fo$" . nxml-mode)) (add-to-list 'auto-mode-alist '("\\.htm$" . nxml-mode)) (add-to-list 'auto-mode-alist '("\\.html$" . nxml-mode)) ;;(add-to-list 'auto-mode-alist '("\\.idd$" . nxml-mode)) ;;(add-to-list 'auto-mode-alist '("\\.ide$" . nxml-mode)) (add-to-list 'auto-mode-alist '("\\.rdf$" . nxml-mode)) ;;(add-to-list 'auto-mode-alist '("\\.rng$" . nxml-mode)) (add-to-list 'auto-mode-alist '("\\.rss$" . nxml-mode)) ;;(add-to-list 'auto-mode-alist '("\\.sch$" . nxml-mode)) (add-to-list 'auto-mode-alist '("\\.sgml$" . nxml-mode)) ;;(add-to-list 'auto-mode-alist '("\\.svg$" . nxml-mode)) (add-to-list 'auto-mode-alist '("\\.xhtml$" . nxml-mode)) (add-to-list 'auto-mode-alist '("\\.xml$" . nxml-mode)) (add-to-list 'auto-mode-alist '("\\.xsd$" . nxml-mode)) (add-to-list 'auto-mode-alist '("\\.xsl$" . nxml-mode)) ;; set magic modes (load "rng-auto") ;;(unify-8859-on-decoding-mode) (when (>= emacs-major-version 22) (add-to-list 'magic-mode-alist '("<\\?xml " . nxml-mode))) ;; nxml hook (defun local-nxml-mode-hook () ;; turn on flyspell (when (require-if-available 'flyspell) (flyspell-prog-mode)) ;; turn on auto-completion (setq nxml-slash-auto-complete-flag t) ;; turn on org minor mode ;; (when (string-match "\\.\\(x?html\\|php[34]?\\)$" ;; (file-name-sans-versions (buffer-file-name))) ;; (local-nxml-mode-org)) ;;(local-nxml-mode-org) ) (add-hook 'nxml-mode-hook 'local-nxml-mode-hook) ;; ;; ;; (defun local-nxml-mode-org () ;; (make-local-variable 'outline-regexp) ;; ;;(setq outline-regexp "\\s *<\\([h][1-6]\\|html\\|body\\|head\\)\\b") ;; (setq outline-regexp "\\s *<") ;; (make-local-variable 'outline-level) ;; (setq outline-level 'local-nxml-mode-outline-level) ;; (outline-minor-mode 1) ;; (hs-minor-mode 1)) ;; (defun local-nxml-mode-outline-level () ;; (save-excursion (re-search-forward html-outline-level)) ;; (let ((tag (buffer-substring (match-beginning 1) (match-end 1)))) ;; (if (eq (length tag) 2) ;; (- (aref tag 1) ?0) ;; 0))) ;; (add-to-list 'hs-special-modes-alist ;; '(nxml-mode ;; "<!--\\|<[^/>]>\\|<[^/][^>]*[^/]>" ;; "" ;; "<!--" ;; won't work on its own; uses syntax table ;; (lambda (arg) (local-nxml-mode-forward-element)) ;; nil)) ;; (defun local-nxml-mode-forward-element () ;; (let ((nxml-sexp-element-flag)) ;; (setq nxml-sexp-element-flag (not (looking-at "<!--"))) ;; (unless (looking-at outline-regexp) ;; (condition-case nil ;; (nxml-forward-balanced-item 1) ;; (error nil))))) ;; remove trailing blanks (add-hook 'nxml-mode-hook 'install-remove-trailing-blanks) ;; remove tabs (add-hook 'nxml-mode-hook 'install-remove-tabs) ) ;; derive xml-mode and html-mode from nxml-mode (defalias 'xml-mode 'nxml-mode) (defalias 'html-mode 'nxml-mode) ;;(fset 'xml-mode 'nxml-mode) ??? ;;============================================================================== ;;; Global Mode Settings ;;============================================================================== (message ";;; modes --> Global Mode Settings") ;; global hook (defun global-mode-hook () ;; remove trailing blanks (install-remove-trailing-blanks) ;; remove tabs (all but makefile-mode) (unless (equal mode-name "Makefile") (install-remove-tabs)) ;; turn on spell mode ;;(flyspell-mode t) ;; set local key bindings (safe-load "keys-local") ) (when (>= emacs-major-version 22) (add-hook 'after-change-major-mode-hook 'global-mode-hook)) (message ";;; modes --> End") ;;============================================================================== ;;; End of File ;;==============================================================================