;;Emacs server (server-start) ;;load-path (add-to-list 'load-path "~/dots/emacs/" t) (add-to-list 'load-path "~/e1/path/32/gambc/current/share/emacs/site-lisp/" t) ;; Gambit modes (autoload 'gambit-inferior-mode "gambit" "Hook Gambit mode into cmuscheme.") (autoload 'gambit-mode "gambit" "Hook Gambit mode into scheme.") (add-hook 'inferior-scheme-mode-hook (function gambit-inferior-mode)) (add-hook 'scheme-mode-hook (function gambit-mode)) (setq scheme-program-name "gsi -:t") ;; Python (setq python-python-command "ipython") ;; TODO check if we have it first ;;I have two Backspace keys, and the World is still not enough (global-set-key (kbd "C-w") 'backward-kill-word) ;; kill-word is M-d (global-set-key (kbd "C-y") 'clipboard-yank) (global-set-key (kbd "C-x C-w") 'kill-region) (global-set-key (kbd "C-x M-w") 'clipboard-kill-ring-save) (global-set-key (kbd "C-<return>") 'newline) (global-set-key (kbd "C-x 4 C-b") 'switch-to-buffer-other-window) ;;no beep beep (setq visible-bell t) ;; Backups and Autosaves (setq backup-by-copying t ;; don't clobber symlinks backup-directory-alist '(("." . "~/.emacs.d/autosaves/")) ;; don't litter delete-old-versions t kept-new-versions 6 kept-old-versions 2 version-control t) ;; use versioned backups (setq default-major-mode 'text-mode) (setq fill-column 79) (setq default-input-method "ucs") ;(toggle-input-method) (add-to-list 'auto-mode-alist '("www.lyricwiki.org.[[:alnum:]]+.txt\\'" lambda nil (set-input-method "vietnamese-telex"))) (add-to-list 'auto-mode-alist '("mail.google.com.[[:alnum:]]+.txt\\'" lambda nil (set-input-method "vietnamese-telex"))) (add-to-list 'auto-mode-alist '("translations.launchpad.net.[[:alnum:]]+.txt\\'" lambda nil (set-input-method "vietnamese-telex"))) (add-to-list 'file-coding-system-alist '("mail.google.com.[[:alnum:]]+.txt\\'" . utf-8-unix)) ;(set-fontset-font "fontset-default" 'latin '("tahoma" . "unicode-bmp")) ;;color-theme (require 'color-theme) (color-theme-initialize) (setq color-theme-is-global t) (if window-system (color-theme-dark-blue2) (color-theme-renegade)) ;;shell-command completion (require 'shell-command) (shell-command-completion-mode) ;; dirvars.el http://www.emacswiki.org/cgi-bin/emacs/DirVarsPackage (require 'dirvars) ;;load anything.el ;(require 'anything) ;; Code Folding (load "folding") (folding-mode-add-find-file-hook) (global-set-key (kbd "C-c f") 'folding-toggle-show-hide) (global-set-key (kbd "C-c c") 'folding-whole-buffer) (global-set-key (kbd "C-c o") 'folding-open-buffer) (folding-add-to-marks-list 'python-mode "#[[[" "#]]]" nil t) ;;hniksic's highlighted HTML ;(require 'htmlize) ;;display blank chars and longlines ;(require 'blank-mode) ;(blank-global-mode-on) (require 'show-wspace) (toggle-trailing-whitespace-font-lock) ;; uniquify with a sensible name (require 'uniquify) (setq uniquify-buffer-name-style 'post-forward) (setq uniquify-trailing-separator-p t) (defadvice iswitchb-kill-buffer (after rescan-after-kill activate) "*Regenerate the list of matching buffer names after a kill. Necessary if using `uniquify' with `uniquify-after-kill-buffer-p' set to non-nil." (setq iswitchb-buflist iswitchb-matches) (iswitchb-rescan)) (defun iswitchb-rescan () "*Regenerate the list of matching buffer names." (interactive) (iswitchb-make-buflist iswitchb-default) (setq iswitchb-rescan t)) ;; css (setq css-indent-offset 2) ;; nxhtml-mode (load "~/dots/emacs/nxml/autostart.el") (setq indent-region-mode t) (setq indent-tabs-mode nil) (setq nxhtml-global-minor-mode t) (setq nxhtml-global-validation-header-mode t) (setq nxhtml-skip-welcome t) (add-hook 'nxhtml-mode-hook 'nxml-fontify-buffer) (setq nxhtml-image-completion-pattern "\\.\\(?:png\\|svg\\|jpg\\|jpeg\\|gif\\)$") (setq nxhtml-validation-headers '(("head-utf-8" . "<?xml version=\"1.0\" encoding=\"utf-8\"?> <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.1//EN\" \"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd\"> <html xmlns=\"http://www.w3.org/1999/xhtml\"> <head> "))) (setq nxhtml-default-encoding 'UTF-8) (eval-after-load 'nxhtml '(define-key nxhtml-mode-map [f2] 'nxml-complete)) (setq html-mode-hook '(lambda () (longlines-mode t))) ;(setq nxhtml-mode-hook ; '(lambda () ; (longlines-mode t))) ;; HTML modes for HTML files (add-to-list 'auto-mode-alist '(".html\\'" . (lambda () (load-library "html-helper-mode") (html-helper-mode)))) (add-to-list 'auto-mode-alist '(".xhtml\\'" . nxhtml-mode)) (add-to-list 'magic-mode-alist '("<\\?xml \\(?:.\\| \\)+?>\\(?:\\| \\)<!DOCTYPE html " . nxhtml-mode)) ;; mở file trông giĝ́ xhtml với nxhtml-mode ;; SVG (add-to-list 'auto-mode-alist '(".svg\\'" . nxml-mode)) (add-to-list 'magic-mode-alist '("<\\?xml \\(?:.\\| \\)+?>\\(?:\\| \\)<!DOCTYPE svg " . nxml-mode)) ;; ui (add-to-list 'magic-mode-alist '("<ui " . nxml-mode)) ;;dictionary (autoload 'dictionary-search "dictionary" "Ask for a word and search it in all dictionaries" t) (autoload 'dictionary-match-words "dictionary" "Ask for a word and search all matching words in the dictionaries" t) (autoload 'dictionary-lookup-definition "dictionary" "Unconditionally lookup the word at point." t) (autoload 'dictionary "dictionary" "Create a new dictionary buffer" t) (autoload 'dictionary-mouse-popup-matching-words "dictionary" "Display entries matching the word at the cursor" t) (autoload 'dictionary-popup-matching-words "dictionary" "Display entries matching the word at the point" t) (autoload 'dictionary-tooltip-mode "dictionary" "Display tooltips for the current word" t) (autoload 'global-dictionary-tooltip-mode "dictionary" "Enable/disable dictionary-tooltip-mode for all buffers" t) (autoload 'dictionary-lookup-definition "dictionary" "Unconditionally lookup the word at point." t) (autoload 'dictionary "dictionary" "Create a new dictionary buffer" t) (autoload 'dictionary-mouse-popup-matching-words "dictionary" "Display entries matching the word at the cursor" t) (autoload 'dictionary-popup-matching-words "dictionary" "Display entries matching the word at the point" t) (autoload 'dictionary-tooltip-mode "dictionary" "Display tooltips for the current word" t) (autoload 'global-dictionary-tooltip-mode "dictionary" "Enable/disable dictionary-tooltip-mode for all buffers" t) (global-set-key "\C-cs" 'dictionary-search) (global-set-key "\C-cm" 'dictionary-match-words) ;; font-lock is messed up by the pronunciation guide of some dicts ;(setq dictionary-mode-hook ; '(font-lock-mode nil)) (setq dictionary-server "localhost") ;; rect-mark ;; Support for marking a rectangle of text with highlighting. (define-key ctl-x-map "r\C-@" 'rm-set-mark) (define-key ctl-x-map [?r ?\C-\ ] 'rm-set-mark) (define-key ctl-x-map "r\C-x" 'rm-exchange-point-and-mark) (define-key ctl-x-map "r\C-w" 'rm-kill-region) (define-key ctl-x-map "r\M-w" 'rm-kill-ring-save) (define-key global-map [S-down-mouse-1] 'rm-mouse-drag-region) (autoload 'rm-set-mark "rect-mark" "Set mark for rectangle." t) (autoload 'rm-exchange-point-and-mark "rect-mark" "Exchange point and mark for rectangle." t) (autoload 'rm-kill-region "rect-mark" "Kill a rectangular region and save it in the kill ring." t) (autoload 'rm-kill-ring-save "rect-mark" "Copy a rectangular region to the kill ring." t) (autoload 'rm-mouse-drag-region "rect-mark" "Drag out a rectangular region with the mouse." t) ;; Use this section in your "~/.emacs" to modify picture mode so that ;; it automatically uses the rect-mark equivalents of many commands. ;; One vision of a better picture mode. (add-hook 'picture-mode-hook 'rm-example-picture-mode-bindings) (autoload 'rm-example-picture-mode-bindings "rect-mark" "Example rect-mark key and mouse bindings for picture mode.") ;;contact info (setq user-full-name "Hoàng Đức Hiếu") (setq user-email-address "hieu.d.hoang@gmail.com") (setq pgg-gpg-user-id (format "%s <%s>" user-full-name user-email-address)) ;; save minibuffer between session (savehist-mode t) ;; save editing files between session (desktop-save-mode 1) (setq history-length 250) (add-to-list 'desktop-globals-to-save 'file-name-history) ;; session.el (require 'session) (add-hook 'after-init-hook 'session-initialize) ;; ANSI color shell (ansi-color-for-comint-mode-on) (transient-mark-mode t) ;(longlines-mode t) (setq longlines-auto-wrap t) (setq longlines-show-hard-newlines t) (put 'narrow-to-region 'disabled nil) (put 'upcase-region 'disabled nil) ;; removes gnu startup screen (setq inhibit-startup-message t) (setq isearch-allow-scroll t) (setq query-replace-skip-read-only t) ;; inserts a final new line if missing ;; `visit' means add a newline (as an undoable change) if it's needed ;; when visiting the file. ;; `visit-save' means add a newline (as an undoable change) if it's ;; needed when visiting the file, and also add a newline if it's ;; needed ;; when saving the file. (setq require-final-newline 'visit-save) ;; disable menubar when running emacs in a terminal (if window-system (menu-bar-mode 1) (menu-bar-mode -1)) ;; (setq history-delete-duplicates t) ;; replaces all "answer yes or no" prompts with "answer y or n" (fset 'yes-or-no-p 'y-or-n-p) ;; interactive buffer switching (lists buffers, selects while typing) (iswitchb-mode 1) ;; make sure that emacs starts the ispell process in your home ;; directory (otherwise can prevent unmounting of usb drive) (setq ispell-process-directory (expand-file-name "~/")) ;; latex-mode (setq latex-mode-hook '(lambda () (longlines-mode t))) ;; Wikipedia-mode (autoload 'wikipedia-mode "wikipedia-mode.el" "Major mode for editing documents in Wikipedia markup." t) (add-to-list 'auto-mode-alist '(".mwiki\\'" . wikipedia-mode)) (setq wikipedia-mode-hook '(lambda () (progn (abbrev-mode) (defun hdh/wikipedia-insert-audience-sentence (&optional number) "insert a mark for an audience sentence, give numeric arg for the speaker's sequence, give 0 for no number" (interactive "p") (insert (if (eq number 0) "'''[Audience member:]'''" (format "'''[Audience member %d:]'''" number)))) (define-key wikipedia-mode-map (kbd "C-c C-f C-q") 'hdh/wikipedia-insert-audience-sentence) ;;markup insert (defun hdh/wikipedia-insert-all (left-mark right-mark back-move forth-move) (if (or (and (boundp 'zmacs-region-active-p) zmacs-region-active-p) (and (boundp 'transient-mark-mode) mark-active)) (save-excursion (if (< (point) (mark)) (exchange-point-and-mark)) (goto-char (point)) (insert left-mark) (goto-char (mark)) (insert right-mark))) (insert left-mark right-mark) (if (< (point) (mark)) (backward-char back-move) (forward-char forth-move))) ;;foo mark (defun hdh/wikipedia-insert-foo () (interactive) (hdh/wikipedia-insert-all "foo" "oof" 3 3)) (define-key wikipedia-mode-map (kbd "C-c C-f C-f") 'hdh/wikipedia-insert-foo) ;; draft mark (defun hdh/wikipedia-insert-draft () (interactive) (if (or (and (boundp 'zmacs-region-active-p) zmacs-region-active-p) (and (boundp 'transient-mark-mode) mark-active)) (save-excursion (goto-char (point)) (insert "<!--d-->") (goto-char (mark)) (insert "<!--d-->")) (insert "<!--d--><!--d-->") (backward-char 8))) (define-key wikipedia-mode-map (kbd "C-c C-f C-d") 'hdh/wikipedia-insert-draft) ;; w:link|here (defun hdh/wikipedia-insert-link-wikipedia () (interactive) (if (or (and (boundp 'zmacs-region-active-p) zmacs-region-active-p) (and (boundp 'transient-mark-mode) mark-active)) (save-excursion (if (< (point) (mark)) (exchange-point-and-mark)) (goto-char (point)) (insert "]]") (goto-char (mark)) (insert "[[w:") (forward-char 4)) (insert "[[w:]]") (backward-char 2))) (define-key wikipedia-mode-map (kbd "C-c C-f C-w") 'hdh/wikipedia-insert-link-wikipedia) t))) ;; save all buffers then close all buffers (defun hdh/save-kill-buffers () (interactive) (save-some-buffers) (kill-some-buffers)) ;; scrolling without moving the point (global-set-key (kbd "M-n") (lambda () (interactive) (scroll-up (/ (window-height) 3)))) (global-set-key (kbd "M-p") (lambda () (interactive) (scroll-down (/ (window-height) 3)))) ;; counts all the words in the buffer (defun hdh/count-words-buffer () (interactive) (count-words-region (point-min) (point-max))) ;;emms ;; (add-to-list 'load-path "~/e1/home/emacs/emms-2.1") ;; (require 'emms-setup) ;; (emms-devel) ;; (emms-default-players) ;; (setq emms-source-file-default-directory "/Music") ;; (defun emms-osd-cat (string) ;; (shell-command ("osd_cat -p middle -A center --wait --delay=3")) ;; nil) ;;Erlang mode ;;(add-to-list 'load-path "~/e1/path/32/erlang/lib/erlang/lib/tools-2.5.4/emacs") ;;(setq erlang-root-dir "~/e1/path/32/erlang/lib/erlang") ;;(add-to-list 'exec-path "~/e1/path/32/erlang/lib/erlang/bin") ;;(require 'erlang-start) ;;Steve Yegge's HTML highlight ;; (defun syntax-highlight-region (start end) ;; "Adds <font> tags into the region that correspond to the ;; current color of the text. Throws the result into a temp ;; buffer, so you don't dork the original." ;; (interactive "r") ;; (let ((text (buffer-substring start end))) ;; (with-output-to-temp-buffer "*html-syntax*" ;; (set-buffer standard-output) ;; (insert "<pre>") ;; (save-excursion (insert text)) ;; (save-excursion (syntax-html-escape-text)) ;; (while (not (eobp)) ;; (let ((plist (text-properties-at (point))) ;; (next-change ;; (or (next-single-property-change ;; (point) 'face (current-buffer)) ;; (point-max)))) ;; (syntax-add-font-tags (point) next-change) ;; (goto-char next-change))) ;; (insert "\n</pre>")))) ;; (defun syntax-add-font-tags (start end) ;; "Puts <font> tag around text between START and END." ;; (let (face color rgb name r g b) ;; (and ;; (setq face (get-text-property start 'face)) ;; (or (if (listp face) (setq face (car face))) t) ;; (setq color (face-attribute face :foreground)) ;; (setq rgb (assoc (downcase color) color-name-rgb-alist)) ;; (destructuring-bind (name r g b) rgb ;; (let ((text (buffer-substring-no-properties start end))) ;; (delete-region start end) ;; (insert (format "<font color=#%.2x%.2x%.2x>" r g b)) ;; (insert text) ;; (insert "</font>")))))) ;; (defun syntax-html-escape-text () ;; "HTML-escapes all the text in the current buffer, starting at ;; (point)." ;; (save-excursion (replace-string "<" "<")) ;; (save-excursion (replace-string ">" ">"))) ;;totd from emacswiki.org (require 'cl) (defun totd () (interactive) (with-output-to-temp-buffer "*Tip of the day*" (let* ((commands (loop for s being the symbols when (commandp s) collect s)) (command (nth (random (length commands)) commands))) (princ (concat "Your tip for the day is:\n========================\n\n" (describe-function command) "\n\nInvoke with:\n\n" (with-temp-buffer (where-is command t) (buffer-string))))))) (random t) (totd) (setq scroll-step 1) ; scroll one line at a time (display-time-mode t) ; display time below (show-paren-mode t) ; show parenthesis (setq column-number-mode t) ; show column numbers below (transient-mark-mode t) ; show mark visually... ;(setq make-backup-files nil) ; no nasty back-up files (setq show-trailing-whitespace t) ; show whitespaces at the end of the line (setq frame-title-format "%b (%m)") ; descriptive frame title "filename (mode)" ;; use ibuffer by default (global-set-key (kbd "C-x C-b") 'ibuffer) (autoload 'ibuffer "ibuffer" "List buffers." t) ;;Rect select (global-set-key (kbd "C-x r C-SPC") 'rm-set-mark) (global-set-key (kbd "C-x r C-x") 'rm-exchange-point-and-mark) (global-set-key (kbd "C-x r C-w") 'rm-kill-region) (global-set-key (kbd "C-x r M-w") 'rm-kill-ring-save) (autoload 'rm-set-mark "rect-mark" "Set mark for rectangle." t) (autoload 'rm-exchange-point-and-mark "rect-mark" "Exchange point and mark for rectangle." t) (autoload 'rm-kill-region "rect-mark" "Kill a rectangular region and save it in the kill ring." t) (autoload 'rm-kill-ring-save "rect-mark" "Copy a rectangular region to the kill ring." t) (rx word) (defun iswitchb-local-keys () (mapc (lambda (K) (let* ((key (car K)) (fun (cdr K))) (define-key iswitchb-mode-map (edmacro-parse-keys key) fun))) '(("<right>" . iswitchb-next-match) ("<left>" . iswitchb-prev-match) ("<up>" . iswitchb-next-match) ("<down>" . iswitchb-prev-match)))) (add-hook 'iswitchb-define-mode-map-hook 'iswitchb-local-keys) (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. '(describe-char-unidata-list (quote (name general-category canonical-combining-class bidi-class decomposition decimal-digit-value digit-value numeric-value mirrored old-name iso-10646-comment uppercase lowercase titlecase))) '(erc-echo-timestamps t) '(erc-insert-timestamp-function (quote erc-insert-timestamp-left)) '(erc-modules (quote (autojoin button completion fill irccontrols match menu netsplit noncommands readonly ring scrolltobottom services smiley sound stamp track unmorse))) '(erc-nick "hdh") '(erc-nick-uniquifier "_") '(erc-server "irc.freenode.net") '(erc-stamp-mode t) '(erc-timestamp-format "[%H:%M]") '(erc-timestamp-use-align-to t) '(mode-line-format (quote ("%e" #("-" 0 1 (help-echo "mouse-1: select (drag to resize), mouse-2 = C-x 1, mouse-3 = C-x 0" auto-composed t)) mode-line-mule-info mode-line-modified mode-line-remote mode-line-frame-identification mode-line-buffer-identification #(" " 0 3 (help-echo "mouse-1: select (drag to resize), mouse-2 = C-x 1, mouse-3 = C-x 0" auto-composed t)) #("[%P of %I (%l,%c)]" 0 18 (auto-composed t)) (vc-mode vc-mode) #(" " 0 2 (help-echo "mouse-1: select (drag to resize), mouse-2 = C-x 1, mouse-3 = C-x 0" auto-composed t)) mode-line-modes (which-func-mode ("" which-func-format #("--" 0 2 (help-echo "mouse-1: select (drag to resize), mouse-2 = C-x 1, mouse-3 = C-x 0" auto-composed t)))) (global-mode-string (#("--" 0 2 (help-echo "mouse-1: select (drag to resize), mouse-2 = C-x 1, mouse-3 = C-x 0" auto-composed t)) global-mode-string)) #("-%-" 0 3 (help-echo "mouse-1: select (drag to resize), mouse-2 = C-x 1, mouse-3 = C-x 0" auto-composed t))))) '(safe-local-variable-values (quote ((default-input-method . "vietnamese-telex") (input-method . "vietnamese-telex") (input-method . vietnamese-telex))))) (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. )