X-Git-Url: http://47.100.26.94:8080/?a=blobdiff_plain;f=emacs.d%2Fconfig.org;h=9bba0512e6b5d780be7b4ea9d54eabcb113dbbd3;hb=61b2714d399e0ae3274dc5b86f85225a5767b530;hp=4bb27f3a8b06aaecec601fd8d72b7d18e726ef6f;hpb=e9f8cf5aebc72e88a52def678753c3e3ff291882;p=dotfiles.git diff --git a/emacs.d/config.org b/emacs.d/config.org index 4bb27f3..9bba051 100644 --- a/emacs.d/config.org +++ b/emacs.d/config.org @@ -25,9 +25,7 @@ Set system PATH and emacs exec path Set the emacs load path #+BEGIN_SRC emacs-lisp :tangle yes :results silent - - (add-to-list 'load-path "~/.emacs.d/elisp") - + ;; (add-to-list 'load-path "~/.emacs.d/elisp") #+END_SRC ** Package Initialization @@ -53,7 +51,7 @@ Disable scroll bar, tool-bar and menu-bar (tool-bar-mode 0) (menu-bar-mode 1) - (setq debug-on-error t) + ;; (setq debug-on-error t) (setq inhibit-startup-message t) (defalias 'yes-or-no-p 'y-or-n-p) @@ -93,6 +91,14 @@ Set default window size (height . 50))) #+END_SRC +Stop auto save +#+BEGIN_SRC emacs-lisp :tangle yes :results silent + (setq auto-save-default nil) + + ;; restore last session + (desktop-save-mode t) +#+END_SRC + * Package Management Tools ** Use-package @@ -350,6 +356,8 @@ clean mode line, Refer to [[https://www.masteringemacs.org/article/hiding-replac (auto-revert-mode . "") ;; default is Ind (org-indent-mode . "") + ;; default is Fly + (flyspell-mode . "") ;; Major modes (lisp-interaction-mode . "λ") (hi-lock-mode . "") @@ -510,16 +518,13 @@ set height in mode line #+END_SRC ** IDO-vertically - #+BEGIN_SRC emacs-lisp :tangle yes :results silent - (use-package ido-vertical-mode :ensure t :init (setq ido-vertical-define-keys 'C-n-C-p-up-and-down) :config (ido-vertical-mode 1)) - #+END_SRC ** SMEX @@ -552,29 +557,124 @@ Use [[https://github.com/DarwinAwardWinner/ido-ubiquitous][ido-ubiquitous]] for #+END_SRC ** Ido-exit-target - [[https://github.com/waymondo/ido-exit-target][ido-exit-target]] let you open file/buffer on =other-windows= when call =ido-switch-buffer= - #+BEGIN_SRC emacs-lisp :tangle yes :results silent - (use-package ido-exit-target :ensure t :init - (define-key ido-common-completion-map (kbd "C-j") #'ido-exit-target-split-window-right) - (define-key ido-common-completion-map (kbd "C-l") #'ido-exit-target-split-window-below)) + (mapcar (lambda (map) + (define-key map (kbd "C-j") #'ido-exit-target-split-window-right) + (define-key map (kbd "C-k") #'ido-exit-target-split-window-below)) + (list ido-buffer-completion-map + ;; ido-common-completion-map + ido-file-completion-map + ido-file-dir-completion-map))) +#+END_SRC + +* Normal Text Operation +** Edit +*** undo-tree +#+BEGIN_SRC emacs-lisp :tangle yes :results silent + (use-package undo-tree + :ensure t + :config + (define-key undo-tree-visualizer-mode-map "j" 'undo-tree-visualize-redo) + (define-key undo-tree-visualizer-mode-map "k" 'undo-tree-visualize-undo) + (define-key undo-tree-visualizer-mode-map "h" 'undo-tree-visualize-switch-branch-left) + (define-key undo-tree-visualizer-mode-map "l" 'undo-tree-visualize-switch-branch-right) + (global-undo-tree-mode 1)) + (global-set-key (kbd "s-u") 'undo-tree-visualize) #+END_SRC -* Key bindings +*** flyspell +Stolen from [[https://github.com/redguardtoo/emacs.d/blob/master/lisp/init-spelling.el][here]], hunspell will search dictionary in =DICPATH= +#+BEGIN_SRC emacs-lisp :tangle yes :results silent + (setenv "DICPATH" "/usr/local/share/hunspell") + + (when (executable-find "hunspell") + (setq-default ispell-program-name "hunspell") + (setq ispell-really-hunspell t)) + + ;; (defun text-mode-hook-setup () + ;; ;; Turn off RUN-TOGETHER option when spell check text-mode + ;; (setq-local ispell-extra-args (flyspell-detect-ispell-args))) + ;; (add-hook 'text-mode-hook 'text-mode-hook-setup) + (add-hook 'text-mode-hook 'flyspell-mode) + + ;; enable flyspell check on comments and strings in progmamming modes + (add-hook 'prog-mode-hook 'flyspell-prog-mode) -** Remove prefix =ESC=, refer [[http://emacs.stackexchange.com/questions/14755/how-to-remove-bindings-to-the-esc-prefix-key][here]] + ;; I don't use the default mappings + (with-eval-after-load 'flyspell + (define-key flyspell-mode-map (kbd "C-;") nil) + (define-key flyspell-mode-map (kbd "C-,") nil) + (define-key flyspell-mode-map (kbd "C-.") nil)) +#+END_SRC + +Make flyspell enabled for org-mode, see [[http://emacs.stackexchange.com/questions/9333/how-does-one-use-flyspell-in-org-buffers-without-flyspell-triggering-on-tangled][here]] +#+BEGIN_SRC emacs-lisp :tangle yes :results silent + ;; NO spell check for embedded snippets + (defadvice org-mode-flyspell-verify (after org-mode-flyspell-verify-hack activate) + (let ((rlt ad-return-value) + (begin-regexp "^[ \t]*#\\+begin_\\(src\\|html\\|latex\\)") + (end-regexp "^[ \t]*#\\+end_\\(src\\|html\\|latex\\)") + old-flag + b e) + (when ad-return-value + (save-excursion + (setq old-flag case-fold-search) + (setq case-fold-search t) + (setq b (re-search-backward begin-regexp nil t)) + (if b (setq e (re-search-forward end-regexp nil t))) + (setq case-fold-search old-flag)) + (if (and b e (< (point) e)) (setq rlt nil))) + (setq ad-return-value rlt))) +#+END_SRC + +*** Expand-region +#+BEGIN_SRC emacs-lisp :tangle yes :results silent + (use-package expand-region + :ensure t + :config + (global-set-key (kbd "C-=") 'er/expand-region)) +#+END_SRC + +** Motion +*** Avy +#+BEGIN_SRC emacs-lisp :tangle yes :results silent + (use-package avy + :ensure t + :config + (avy-setup-default)) +#+END_SRC +*** =M-g= prefix #+BEGIN_SRC emacs-lisp :tangle yes :results silent + (global-set-key (kbd "M-g j") 'avy-goto-line-below) + (global-set-key (kbd "M-g k") 'avy-goto-line-above) + (global-set-key (kbd "M-g w") 'avy-goto-word-1-below) + (global-set-key (kbd "M-g b") 'avy-goto-word-1-above) + (global-set-key (kbd "M-g e") 'avy-goto-word-0) + (global-set-key (kbd "M-g f") 'avy-goto-char-timer) + (global-set-key (kbd "M-g c") 'avy-goto-char-in-line) - ;; (define-key key-translation-map (kbd "ESC") (kbd "C-g")) + ;; M-g TAB move-to-column + ;; M-g ESC Prefix Command + ;; M-g c goto-char + ;; M-g g goto-line + ;; M-g n next-error + ;; M-g p previous-error + ;; M-g M-g goto-line + ;; M-g M-n next-error + ;; M-g M-p previous-error #+END_SRC + +** Search & highlight +* Key bindings + ** Esc on Minibuffer Use =ESC= to exit minibuffer. Also I map =Super-h= the same as =C-g= @@ -633,13 +733,6 @@ Use =ESC= to exit minibuffer. Also I map =Super-h= the same as =C-g= ;; C-7 ;; C-Space - - - - - - - #+END_SRC ** =Super= bindings for file, buffer and windows @@ -673,6 +766,8 @@ Some global bindings on =Super=, on Mac, it is =Command= (global-set-key (kbd "s-=") 'text-scale-increase) (global-set-key (kbd "s--") 'text-scale-decrease) + ;; (global-set-key (kbd "s-u") 'undo-tree-visualize) + ;; someothers default mapping on super (command) key ;; s-s save-buffer @@ -806,7 +901,7 @@ use the prefix =M-s= for searching in buffers (sd/make-keymap "\M-s" '(("w" . save-buffer) ;; ("\M-w" . save-buffer) - ("W" . revert-buffer) + ("e" . revert-buffer) ("s" . isearch-forward-regexp) ("r" . isearch-backward-regexp) ("." . isearch-forward-symbol-at-point) @@ -850,7 +945,6 @@ use the prefix =M-s= for searching in buffers Always indents header, and hide header leading starts so that no need type =#+STATUP: indent= #+BEGIN_SRC emacs-lisp :tangle yes :results silent - (use-package org :ensure t :init @@ -880,6 +974,7 @@ Always indents header, and hide header leading starts so that no need type =#+ST ;; use current window for org source buffer editting (setq org-src-window-setup 'current-window ) + (define-key org-mode-map (kbd "C-'") nil) #+END_SRC ** Org-bullets @@ -1206,6 +1301,9 @@ and Defined keys, using vi keybindings, Refer abo-abo's setting [[https://github #+BEGIN_SRC emacs-lisp :tangle yes :results silent (use-package magit :ensure t + :init + ;; don't ask me to confirm the unsaved change + (setq magit-save-repository-buffers nil) :commands magit-status magit-blame :config (dolist (map (list magit-status-mode-map @@ -1214,7 +1312,8 @@ and Defined keys, using vi keybindings, Refer abo-abo's setting [[https://github magit-staged-section-map)) (define-key map "j" 'magit-section-forward) (define-key map "k" 'magit-section-backward) - (define-key map "D" 'magit-discard-file) + (define-key map "D" 'magit-discard) + (define-key map "O" 'magit-discard-file) (define-key map "n" nil) (define-key map "p" nil) (define-key map "v" 'recenter-top-bottom) @@ -1296,10 +1395,8 @@ Toggle an eshell in split window below, refer [[http://www.howardism.org/Technic #+END_SRC *** Font Zoom - #+BEGIN_SRC emacs-lisp :tangle yes :results silent - (defhydra sd/font-zoom (global-map "") - + (defhydra sd/font-zoom (global-map "") "zoom" ("g" text-scale-increase "in") ("l" text-scale-decrease "out")) @@ -1372,6 +1469,7 @@ Refer [[https://github.com/abo-abo/hydra/blob/master/hydra-examples.el][hydra-ex ("o" delete-other-windows "one" :exit t) ("C-o" ido-switch-buffer "buf" :exit t) ("C-k" sd/delete-current-window "del" :exit t) + ("'" other-window "other" :exit t) ("a" ace-window "ace") ("s" ace-swap-window "swap") ("d" ace-delete-window "ace-one" :exit t) @@ -1390,25 +1488,32 @@ Refer [[https://github.com/abo-abo/hydra/blob/master/hydra-examples.el][hydra-ex *** hydra misc #+BEGIN_SRC emacs-lisp :tangle yes :results silent - (defhydra sd/hydra-misc () + (defhydra sd/hydra-misc (:color red :columns nil) "Miscellaneous Commands" - ("e" eshell "eshell" :color red :exit t) + ("e" eshell "eshell" :exit t) ("p" (lambda () (interactive) - (if (sd/buffer-exist "*Packages*") + (if (not (eq nil (get-buffer "*Packages*"))) (switch-to-buffer "*Packages*") (package-list-packages))) - "list-package" :color red :exit t) - ("g" magit-status "git-status" :color red :exit t)) + "list-package" :exit t) + ("g" magit-status "git-status" :exit t) + ("'" mode-line-other-buffer "last buffer" :exit t) + ("C-'" mode-line-other-buffer "last buffer" :exit t) + ("m" man "man" :exit t) + ("d" dired-jump "dired" :exit t) + ("b" ibuffer "ibuffer" :exit t) + ("q" nil "quit") + ("f" nil "quit")) + + (global-set-key (kbd "C-'") 'sd/hydra-misc/body) #+END_SRC *** hydra launcher #+BEGIN_SRC emacs-lisp :tangle yes :results silent - (defhydra hydra-launcher (:color blue :columns 2) + (defhydra sd/hydra-launcher (:color blue :columns 2) "Launch" - ("h" man "man") - ("s" eshell "eshell") - ("p" package-list-packages "Package") + ("e" emms "emms" :exit t) ("q" nil "cancel")) #+END_SRC @@ -1609,18 +1714,6 @@ Play Go in Emacs, gnugo xpm refert [[https://github.com/okanotor/dotemacs/blob/f #+END_SRC -** undo-tree -#+BEGIN_SRC emacs-lisp :tangle yes :results silent - (use-package undo-tree - :ensure t - :config - (define-key undo-tree-visualizer-mode-map "j" 'undo-tree-visualize-redo) - (define-key undo-tree-visualizer-mode-map "k" 'undo-tree-visualize-undo) - (define-key undo-tree-visualizer-mode-map "h" 'undo-tree-visualize-switch-branch-left) - (define-key undo-tree-visualizer-mode-map "l" 'undo-tree-visualize-switch-branch-right) - (global-undo-tree-mode 1)) -#+END_SRC - ** Tabbar #+BEGIN_SRC emacs-lisp :tangle yes :results silent @@ -1640,14 +1733,6 @@ Play Go in Emacs, gnugo xpm refert [[https://github.com/okanotor/dotemacs/blob/f #+END_SRC -** dired -=C-o= is defined as a global key for window operation, here unset it in dired mode -#+BEGIN_SRC emacs-lisp :tangle yes :results silent - (add-hook 'dired-mode-hook (lambda () - (local-unset-key (kbd "C-o")) - (local-set-key (kbd "o") 'dired-display-file))) -#+END_SRC - ** Info plus #+BEGIN_SRC emacs-lisp :tangle yes :results silent (el-get-bundle info+ @@ -1658,6 +1743,91 @@ Play Go in Emacs, gnugo xpm refert [[https://github.com/okanotor/dotemacs/blob/f ** TODO bookmark ** TODO Calendar +** advice info +#+BEGIN_SRC emacs-lisp :tangle yes :results silent + (defun sd/info-mode () + (interactive) + (unless (equal major-mode 'Info-mode) + (unless (> (length (window-list)) 1) + (split-window-right)) + (other-window 1) + ;; (info) + )) + + ;; (global-set-key (kbd "C-h i") 'sd/info-mode) + + ;; open Info buffer in other window instead of current window + (defadvice info (before my-info (&optional file buf) activate) + (sd/info-mode)) + + (defadvice Info-exit (after my-info-exit activate) + (sd/delete-current-window)) +#+END_SRC + +** TODO Man mode +Color for Man-mode +#+BEGIN_SRC emacs-lisp :tangle yes :results silent + ;; (add-hook 'Man-mode-hook (lambda () + ;; (interactive) + ;; (setenv "GROFF_NO_SRG"))) +#+END_SRC + +** TODO swiper to occur + +** TODO UTF8 +#+BEGIN_SRC emacs-lisp :tangle yes :results silent + ;; (set-language-environment "UTF-8") + ;; (set-default-coding-systems 'utf-8) +#+END_SRC + +** Demo It +#+BEGIN_SRC emacs-lisp :tangle yes :results silent + ;; (el-get-bundle howardabrams/demo-it) + + (use-package org-tree-slide + :ensure t) + + ;; (use-package yasnippet + ;; :ensure t) +#+END_SRC + +** Presentation +#+BEGIN_SRC emacs-lisp :tangle yes :results silent + (use-package org-tree-slide + :ensure + :config + ;; (define-key org-mode-map "\C-ccp" 'org-tree-slide-mode) + (define-key org-tree-slide-mode-map (kbd "") 'org-tree-slide-content) + (define-key org-tree-slide-mode-map (kbd "") 'org-tree-slide-move-next-tree) + (define-key org-tree-slide-mode-map [escape] 'org-tree-slide-move-previous-tree)) +#+END_SRC + +* dired +=C-o= is defined as a global key for window operation, here unset it in dired mode +#+BEGIN_SRC emacs-lisp :tangle yes :results silent + (use-package dired + :config + (require 'dired-x) + (setq dired-omit-mode t) + (setq dired-omit-files (concat dired-omit-files "\\|^\\..+$")) + (add-hook 'dired-mode-hook (lambda () + (define-key dired-mode-map (kbd "C-o") nil) + (define-key dired-mode-map (kbd "H") 'dired-omit-mode) + (define-key dired-mode-map (kbd "DEL") (lambda () (interactive) (find-alternate-file ".."))) + (dired-omit-mode)))) +#+END_SRC + +Dired+ +#+BEGIN_SRC emacs-lisp :tangle yes :results silent + (use-package dired+ + :ensure t + :init + (setq diredp-hide-details-initially-flag nil) + :config + (define-key dired-mode-map (kbd "j") 'diredp-next-line) + (define-key dired-mode-map (kbd "k") 'diredp-previous-line) + (define-key dired-mode-map (kbd "g") 'dired-goto-file)) +#+END_SRC * Programming @@ -2013,6 +2183,11 @@ See [[https://www.emacswiki.org/emacs/GnusWindowLayout][GnusWindowLayout]] ;; (gnus-group-select-group "INBOX"))) #+END_SRC +* Blog +#+BEGIN_SRC emacs-lisp :tangle yes :results silent + +#+END_SRC + * key - passion - vision