X-Git-Url: http://47.100.26.94:8080/?a=blobdiff_plain;f=emacs.d%2Fconfig.org;h=aebc41c9c72ae8a42c988d7d217bc9be1884c8f2;hb=9f6e82fd3c2bf71d338d4f8d7c0fbe9744098b2c;hp=13eadae18ca722ef3a2f48b38c46119fd9e40cc4;hpb=e6d6e7d2c6385b8b5ed57e9199a15468ac569aa3;p=dotfiles.git diff --git a/emacs.d/config.org b/emacs.d/config.org index 13eadae..aebc41c 100644 --- a/emacs.d/config.org +++ b/emacs.d/config.org @@ -565,16 +565,102 @@ Use [[https://github.com/DarwinAwardWinner/ido-ubiquitous][ido-ubiquitous]] for #+END_SRC -* Key bindings +* 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 + +*** 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) +#+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 -** Remove prefix =ESC=, refer [[http://emacs.stackexchange.com/questions/14755/how-to-remove-bindings-to-the-esc-prefix-key][here]] +** 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 g") 'avy-goto-line) + (global-set-key (kbd "M-g e") 'avy-goto-word-0) + (global-set-key (kbd "M-g w") 'avy-goto-word-1) + (global-set-key (kbd "M-g c") 'avy-goto-char-timer) + (global-set-key (kbd "M-g f") '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= @@ -656,18 +742,14 @@ Some global bindings on =Super=, on Mac, it is =Command= (global-set-key (kbd "s-h") 'keyboard-quit) (global-set-key (kbd "s-j") 'ido-switch-buffer) (global-set-key (kbd "s-k") 'ido-find-file) - ;; s-k --> kill-this-buffer (global-set-key (kbd "s-l") 'sd/delete-current-window) ;; s-l --> goto-line - (global-set-key (kbd "s-;") 'swiper) + ;; (global-set-key (kbd "s-/") 'swiper) ;; s-; --> ;; s-' --> 'next-multiframe-window (global-set-key (kbd "") 'toggle-frame-fullscreen) - ;; (global-set-key (kbd "s-y") 'projectile-find-file) (global-set-key (kbd "s-f") 'projectile-find-file) - ;; (global-set-key (kbd "s-[") 'persp-next) - ;; (global-set-key (kbd "s-]") 'persp-prev) (global-set-key (kbd "s-`") 'mode-line-other-buffer) @@ -677,6 +759,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 @@ -733,7 +817,69 @@ Some global bindings on =Super=, on Mac, it is =Command= ;; s-` --> other-frame #+END_SRC -** =M-s= bindings for searching +** Search Replace and highlight +*** Occur +Occur search key bindings +#+BEGIN_SRC emacs-lisp :tangle yes :results silent + (add-hook 'occur-hook (lambda () + (switch-to-buffer-other-window "*Occur*") + (define-key occur-mode-map (kbd "C-o") nil))) + ;; auto select occur window + + (define-key occur-mode-map (kbd "C-n") + (lambda () + (interactive) + (occur-next) + (occur-mode-goto-occurrence-other-window) + (recenter) + (other-window 1))) + + (define-key occur-mode-map (kbd "C-p") + (lambda () + (interactive) + (occur-prev) + (occur-mode-goto-occurrence-other-window) + (recenter) + (other-window 1))) + + (use-package color-moccur + :ensure t + :commands (isearch-moccur isearch-all) + :init + (setq isearch-lazy-highlight t) + :config + (use-package moccur-edit)) +#+END_SRC + +*** swiper +#+BEGIN_SRC emacs-lisp :tangle yes :results silent + (use-package swiper + :ensure t) + + (ivy-mode 1) + (setq ivy-use-virtual-buffers t) + (global-set-key (kbd "s-/") 'swiper) + ;;* + ;; (global-set-key "\C-s" 'swiper) + ;; (global-set-key (kbd "C-c C-r") 'ivy-resume) + ;; (global-set-key (kbd "") 'ivy-resume) + ;; ;; (global-set-key (kbd "M-x") 'counsel-M-x) + ;; ;; (global-set-key (kbd "C-x C-f") 'counsel-find-file) + ;; (global-set-key (kbd " f") 'counsel-describe-function) + ;; (global-set-key (kbd " v") 'counsel-describe-variable) + ;; (global-set-key (kbd " l") 'counsel-load-library) + ;; (global-set-key (kbd " i") 'counsel-info-lookup-symbol) + ;; (global-set-key (kbd " u") 'counsel-unicode-char) + ;; (global-set-key (kbd "C-c g") 'counsel-git) + ;; (global-set-key (kbd "C-c j") 'counsel-git-grep) + ;; (global-set-key (kbd "C-c k") 'counsel-ag) + ;; (global-set-key (kbd "C-x l") 'counsel-locate) + ;; (global-set-key (kbd "C-S-o") 'counsel-rhythmbox) + ;; ;; (define-key read-expression-map (kbd "C-r") 'counsel-expression-history) + +#+END_SRC + +*** =M-s= prefix use the prefix =M-s= for searching in buffers #+BEGIN_SRC emacs-lisp :tangle yes :results silent (defun sd/make-keymap (key bindings) @@ -748,7 +894,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) @@ -761,7 +907,7 @@ use the prefix =M-s= for searching in buffers ("f" . keyboard-quit) ("q" . keyboard-quit))) - ;; search and replace + ;; search and replace and highlight (define-key isearch-mode-map (kbd "M-s") 'isearch-repeat-forward) (define-key isearch-mode-map (kbd "M-r") 'isearch-repeat-backward) (global-set-key (kbd "s-[") 'highlight-symbol-next) @@ -771,18 +917,7 @@ use the prefix =M-s= for searching in buffers (define-key minibuffer-local-map "\M-s" nil) - - (set-face-background 'ido-first-match "white") - - - - ;; M-s h . highlight-symbol-at-point - ;; M-s h f hi-lock-find-patterns - ;; M-s h l highlight-lines-matching-regexp - ;; M-s h p highlight-phrase - ;; M-s h r highlight-regexp - ;; M-s h u unhighlight-regexp - ;; M-s h w hi-lock-write-interactive-patterns + (set-face-background 'ido-first-match "yellow") ;; M-s M-w eww-search-words @@ -792,38 +927,6 @@ use the prefix =M-s= for searching in buffers ;; M-u, #+END_SRC -Occur search key bindings -#+BEGIN_SRC emacs-lisp :tangle yes :results silent - (add-hook 'occur-hook (lambda () - (switch-to-buffer-other-window "*Occur*") - (define-key occur-mode-map (kbd "C-o") nil))) - ;; auto select occur window - - (define-key occur-mode-map (kbd "C-n") - (lambda () - (interactive) - (occur-next) - (occur-mode-goto-occurrence-other-window) - (recenter) - (other-window 1))) - - (define-key occur-mode-map (kbd "C-p") - (lambda () - (interactive) - (occur-prev) - (occur-mode-goto-occurrence-other-window) - (recenter) - (other-window 1))) - - (use-package color-moccur - :ensure t - :commands (isearch-moccur isearch-all) - :init - (setq isearch-lazy-highlight t) - :config - (use-package moccur-edit)) -#+END_SRC - ** =M-o= as prefix key for windows ** =M-g= as prefix key for launcher @@ -1594,47 +1697,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 - -** swiper - -#+BEGIN_SRC emacs-lisp :tangle yes :results silent - - (use-package swiper - :ensure t) - - - (ivy-mode 1) - (setq ivy-use-virtual-buffers t) - ;; (global-set-key "\C-s" 'swiper) - ;; (global-set-key (kbd "C-c C-r") 'ivy-resume) - ;; (global-set-key (kbd "") 'ivy-resume) - ;; ;; (global-set-key (kbd "M-x") 'counsel-M-x) - ;; ;; (global-set-key (kbd "C-x C-f") 'counsel-find-file) - ;; (global-set-key (kbd " f") 'counsel-describe-function) - ;; (global-set-key (kbd " v") 'counsel-describe-variable) - ;; (global-set-key (kbd " l") 'counsel-load-library) - ;; (global-set-key (kbd " i") 'counsel-info-lookup-symbol) - ;; (global-set-key (kbd " u") 'counsel-unicode-char) - ;; (global-set-key (kbd "C-c g") 'counsel-git) - ;; (global-set-key (kbd "C-c j") 'counsel-git-grep) - ;; (global-set-key (kbd "C-c k") 'counsel-ag) - ;; (global-set-key (kbd "C-x l") 'counsel-locate) - ;; (global-set-key (kbd "C-S-o") 'counsel-rhythmbox) - ;; ;; (define-key read-expression-map (kbd "C-r") 'counsel-expression-history) - -#+END_SRC - ** Tabbar #+BEGIN_SRC emacs-lisp :tangle yes :results silent @@ -1672,6 +1734,26 @@ 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 * Programming