X-Git-Url: http://47.100.26.94:8080/?a=blobdiff_plain;f=emacs.d%2Fconfig.org;h=690bbe655e33caaa182f6753a6bfd32e4386355e;hb=6536132c3d7943e7d0c79263144f487a4a05d4d8;hp=77ab38212d5e1977264e4429929dc56645ba6e18;hpb=d72dd2e3f598e476cc17bed51e70b19d630db7ed;p=dotfiles.git diff --git a/emacs.d/config.org b/emacs.d/config.org index 77ab382..690bbe6 100644 --- a/emacs.d/config.org +++ b/emacs.d/config.org @@ -406,7 +406,6 @@ Install powerline mode [[https://github.com/milkypostman/powerline][powerline]] #+END_SRC Revised powerline-center-theme - #+BEGIN_SRC emacs-lisp :tangle yes :results silent (defun sd/powerline-simpler-vc (s) (if s @@ -421,11 +420,23 @@ Revised powerline-center-theme "My Powerline face 1 based on powerline-active1." :group 'powerline) + (defface sd/buffer-view-active1 '((t (:background "green" :foreground "black" :inherit mode-line))) + "My Powerline face 1 based on powerline-active1." + :group 'powerline) + (defface sd/mode-line-buffer-id '((t (:background "yellow" :foreground "black" :inherit mode-line-buffer-id))) "My powerline mode-line face, based on mode-line-buffer-id" :group 'powerline) + ;; Don't show buffer modified for scratch and eshell mode + (defun sd/buffer-show-modified () + "Dot not show modified indicator for buffers" + (interactive) + (unless (or (string-match "*scratch*" (buffer-name)) + (equal major-mode 'eshell-mode)) + t)) + (defun sd/powerline-center-theme_revised () "Setup a mode-line with major and minor modes centered." (interactive) @@ -436,10 +447,10 @@ Revised powerline-center-theme (mode-line-buffer-id (if active 'sd/mode-line-buffer-id 'mode-line-buffer-id-inactive)) (mode-line (if active 'mode-line 'mode-line-inactive)) (my-face1 (if active 'sd/powerline-active1 'powerline-inactive1)) - (my-face-buffer-modified (if (buffer-modified-p) + (my-face-buffer-modified (if (and (sd/buffer-show-modified) (buffer-modified-p)) 'sd/buffer-modified-active1 - (if active 'sd/powerline-active1 - 'powerline-inactive1))) + (if buffer-read-only 'sd/buffer-view-active1 + my-face1))) (face1 (if active 'powerline-active1 'powerline-inactive1)) (face2 (if active 'powerline-active2 'powerline-inactive2)) (separator-left (intern (format "powerline-%s-%s" @@ -448,7 +459,7 @@ Revised powerline-center-theme (separator-right (intern (format "powerline-%s-%s" (powerline-current-separator) (cdr powerline-default-separator-dir)))) - (lhs (list (powerline-raw "%*" my-face-buffer-modified 'l) + (lhs (list (powerline-raw "%* " my-face-buffer-modified 'l) ;; (powerline-buffer-size mode-line 'l) (powerline-buffer-id mode-line-buffer-id 'l) (powerline-raw " " my-face1) @@ -461,9 +472,11 @@ Revised powerline-center-theme (powerline-raw ":" face1) (powerline-raw "%3c" face1 'r) (funcall separator-right face1 my-face1) - (powerline-raw " " my-face1) - (powerline-raw "%6p" my-face1 'r) - (powerline-hud my-face1 face1 ))) + ;; (powerline-raw " " my-face1) + (powerline-raw (format-time-string " %I:%M %p ") my-face1 'r) + ;; (powerline-raw "%6p" my-face1 'r) + ;; (powerline-hud my-face1 face1 ) + )) (center (list (powerline-raw " " face1) (funcall separator-left face1 face2) (when (and (boundp 'erc-track-minor-mode) erc-track-minor-mode) @@ -484,21 +497,19 @@ Revised powerline-center-theme #+END_SRC Fix the issue in mode line when showing triangle - #+BEGIN_SRC emacs-lisp :tangle yes :results silent (setq ns-use-srgb-colorspace nil) #+END_SRC set height in mode line - #+BEGIN_SRC emacs-lisp :tangle yes :results silent - - (custom-set-variables - '(powerline-height 14) - '(powerline-text-scale-factor 0.8)) - ;; 100/140 + (set-variable 'powerline-height 14) + (set-variable 'powerline-text-scale-factor (/ (float 100) 140)) + ;; (custom-set-variables + ;; '(powerline-height 14) + ;; '(powerline-text-scale-factor (/ (float 100) 140))) + ;; 100/140;0.8 (set-face-attribute 'mode-line nil :height 100) - #+END_SRC * IDO & SMEX @@ -617,10 +628,10 @@ Stolen from [[https://github.com/redguardtoo/emacs.d/blob/master/lisp/init-spell ;; ;; 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) + ;; (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) + ;; (add-hook 'prog-mode-hook 'flyspell-prog-mode) ;; I don't use the default mappings (with-eval-after-load 'flyspell @@ -657,39 +668,6 @@ Make flyspell enabled for org-mode, see [[http://emacs.stackexchange.com/questio (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) - - ;; 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 @@ -713,45 +691,6 @@ Use =ESC= to exit minibuffer. Also I map =Super-h= the same as =C-g= #+END_SRC -** =Ctrl= key bindings - -#+BEGIN_SRC emacs-lisp :tangle yes :results silent - ;; - - ;; C-h help - ;; C-j newline and indent - ;; C-k kill line - ;; C-l recenter-top-bottom - ;; (global-set-key (kbd "C-;") 'ido-switch-buffer) - ;; C-; - ;; C-' - ;; C-ret - - ;; C-n next-line - ;; C-m - ;; C-, - ;; C-. - ;; C-/ - - ;; C-y - ;; C-u - ;; C-i - ;; C-o - ;; C-p - ;; C-[ - ;; C-] - ;; C-\ - - ;; C-= - ;; C-- - ;; C-0 - ;; C-9 - ;; C-8 - ;; C-7 - - ;; C-Space -#+END_SRC - ** =Super= bindings for file, buffer and windows Some global bindings on =Super=, on Mac, it is =Command= @@ -842,39 +781,6 @@ Some global bindings on =Super=, on Mac, it is =Command= #+END_SRC ** 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 @@ -883,14 +789,18 @@ Occur search key bindings (ivy-mode 1) (setq ivy-use-virtual-buffers t) (global-set-key (kbd "s-/") 'swiper) + + (use-package counsel + :ensure t + :defer 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 "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 "C-h f") 'counsel-describe-function) + (global-set-key (kbd "C-h 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) @@ -901,6 +811,10 @@ Occur search key bindings ;; (global-set-key (kbd "C-S-o") 'counsel-rhythmbox) ;; ;; (define-key read-expression-map (kbd "C-r") 'counsel-expression-history) + (set-face-attribute + 'ivy-current-match nil + :background "Orange" + :foreground "black") #+END_SRC *** =M-s= prefix @@ -952,10 +866,6 @@ use the prefix =M-s= for searching in buffers ;; M-u, #+END_SRC -** =M-o= as prefix key for windows - -** =M-g= as prefix key for launcher - * Org-mode Settings ** Org-mode Basic setting @@ -988,12 +898,21 @@ Always indents header, and hide header leading starts so that no need type =#+ST (sh . t) (sqlite . t) (js . t) - (gnuplot . t))) + (gnuplot . t) + (ditaa . t))) ;; use current window for org source buffer editting (setq org-src-window-setup 'current-window ) (define-key org-mode-map (kbd "C-'") nil) + ;; C-M-i is mapped to imenu globally + (define-key org-mode-map (kbd "C-M-i") nil) + + ;; set the ditta.jar path + (setq org-ditaa-jar-path "/usr/local/Cellar/ditaa/0.9/libexec/ditaa0_9.jar") + (unless + (file-exists-p org-ditaa-jar-path) + (error "seudut: ditaa.jar not found at %s " org-ditaa-jar-path)) #+END_SRC ** Org-bullets @@ -1461,50 +1380,6 @@ Refer [[https://github.com/abo-abo/hydra/blob/master/hydra-examples.el][hydra-ex #+END_SRC -*** hydra-window -#+BEGIN_SRC emacs-lisp :tangle yes :results silent - (winner-mode 1) - - (defhydra sd/hydra-window (:color red :columns nil) - "window" - ("h" windmove-left nil :exit t) - ("j" windmove-down nil :exit t) - ("k" windmove-up nil :exit t) - ("l" windmove-right nil :exit t) - ("H" hydra-move-splitter-left nil) - ("J" hydra-move-splitter-down nil) - ("K" hydra-move-splitter-up nil) - ("L" hydra-move-splitter-right nil) - ("v" (lambda () - (interactive) - (split-window-right) - (windmove-right)) - "vert" :exit t) - ("x" (lambda () - (interactive) - (split-window-below) - (windmove-down)) - "horz" :exit t) - ("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) - ("i" ace-maximize-window "ace-one" :exit t) - ("b" ido-switch-buffer "buf" :exit t) - ("C-b" ido-switch-buffer "buf" :exit t) - ;; ("m" headlong-bookmark-jump "bmk") - ("q" nil "cancel") - ("u" (progn (winner-undo) (setq this-command 'winner-undo)) "undo") - ("r" (progn (winner-redo) (setq this-command 'winner-redo)) "redo") - ("f" nil)) - - (global-unset-key (kbd "C-o")) - (global-set-key (kbd "C-o") 'sd/hydra-window/body) -#+END_SRC - *** hydra misc #+BEGIN_SRC emacs-lisp :tangle yes :results silent (defhydra sd/hydra-misc (:color red :columns nil) @@ -1541,9 +1416,9 @@ Refer [[https://github.com/abo-abo/hydra/blob/master/hydra-examples.el][hydra-ex Enable linum mode on programming modes #+BEGIN_SRC emacs-lisp :tangle yes :results silent - (add-hook 'prog-mode-hook 'linum-mode) - + ;; (add-hook 'prog-mode-hook (lambda () + ;; (setq-default indicate-empty-lines t))) #+END_SRC Fix the font size of line number @@ -1802,11 +1677,6 @@ When see function by =C-h f=, and visit the source code, I would like the buffer ** 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 @@ -1945,13 +1815,18 @@ Refer [[https://www.emacswiki.org/emacs/AutoInsertMode][AutoInsertMode]] Wiki ))) #+END_SRC -*** Keywords +*** Perl Keywords #+BEGIN_SRC emacs-lisp :tangle yes :results silent (font-lock-add-keywords 'cperl-mode - '(("\\(say\\)" . font-lock-function-name-face))) + '(("\\(say\\)" . cperl-nonoverridable-face) + ("\\([0-9.]\\)*" . font-lock-constant-face) + ("\".*\\(\\\n\\).*\"" . font-lock-constant-face) + ("\n" . font-lock-constant-face) + ("\\(^#!.*\\)$" . cperl-nonoverridable-face))) + + ;; (font-lock-add-keywords 'Man-mode + ;; '(("\\(NAME\\)" . font-lock-function-name-face))) - (font-lock-add-keywords 'Man-mode - '(("\\(NAME\\)" . font-lock-function-name-face))) #+END_SRC *** Run Perl @@ -2321,6 +2196,16 @@ Use =gnuplot= on =Org-mode= file, see [[http://orgmode.org/worg/org-contrib/babe - passion - vision - mission +* Ediff +#+BEGIN_SRC emacs-lisp :tangle yes :results silent + (with-eval-after-load 'ediff + (setq ediff-split-window-function 'split-window-horizontally) + (setq ediff-window-setup-function 'ediff-setup-windows-plain) + (add-hook 'ediff-startup-hook 'ediff-toggle-wide-display) + (add-hook 'ediff-cleanup-hook 'ediff-toggle-wide-display) + (add-hook 'ediff-suspend-hook 'ediff-toggle-wide-display)) +#+END_SRC + * TODO Convert ASCII to key ** map =function-key-map= [[http://academic.evergreen.edu/projects/biophysics/technotes/program/ascii_ctrl.htm][ascii_ctrl]] new file =C-x C-f C-f= @@ -2329,9 +2214,205 @@ new file =C-x C-f C-f= #+BEGIN_SRC emacs-lisp :tangle yes :results silent (font-lock-add-keywords 'perl-mode '(("\\(|\\w+?\\(,\\w+?\\)?|\\)" 1 'py-builtins-face))) +#+END_SRC + +* TODO set fly-spell binding + +* TODO imenu bindings + +* DONE modified indicator +:LOGBOOK: +- State "DONE" from "TODO" [2016-07-18 Mon 23:35] +:END: +* DONE highlight selected ido candicate +:LOGBOOK: +- State "DONE" from "TODO" [2016-07-19 Tue 01:49] +:END: +* DONE show time in right of mode-line +:LOGBOOK: +- State "DONE" from "TODO" [2016-07-19 Tue 01:11] +:END: +* DONE ediff mode +:LOGBOOK: +- State "DONE" from "TODO" [2016-07-19 Tue 01:11] +:END: +* TODO jump last change point +* TODO emms mode-line + +* NEXT Key Bindings +Here are some global key bindings for basic editting +** Project operations - =super= +=projectile= settins +** Windown & Buffer - =C-o= +Defind a =hydra= function for windows, buffer & bookmark operations. And map it to =C-o= globally. +Most use =C-o C-o= to switch buffers; =C-o x, v= to split window; =C-o o= to delete other windows +#+BEGIN_SRC emacs-lisp :tangle yes :results silent + (winner-mode 1) - (font-lock-add-keywords - 'cperl-mode - '(("\\(say\\)" . font-lock-constant-face))) + (defhydra sd/hydra-window (:color red :columns nil) + "window" + ("h" windmove-left nil :exit t) + ("j" windmove-down nil :exit t) + ("k" windmove-up nil :exit t) + ("l" windmove-right nil :exit t) + ("H" hydra-move-splitter-left nil) + ("J" hydra-move-splitter-down nil) + ("K" hydra-move-splitter-up nil) + ("L" hydra-move-splitter-right nil) + ("v" (lambda () + (interactive) + (split-window-right) + (windmove-right)) + "vert" :exit t) + ("x" (lambda () + (interactive) + (split-window-below) + (windmove-down)) + "horz" :exit t) + ("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) + ("i" ace-maximize-window "ace-one" :exit t) + ("b" ido-switch-buffer "buf" :exit t) + ("C-b" ido-switch-buffer "buf" :exit t) + ("m" bookmark-jump-other-window "open bmk" :exit t) + ("M" bookmark-set "set bmk" :exit t) + ("q" nil "cancel") + ("u" (progn (winner-undo) (setq this-command 'winner-undo)) "undo") + ("r" (progn (winner-redo) (setq this-command 'winner-redo)) "redo") + ("C-h" nil nil :exit t) + ("C-j" nil nil :exit t) + ;; ("C-k" nil :exit t) + ("C-l" nil nil :exit t) + ("C-;" nil nil :exit t) + ("p" nil nil :exit t) + ("n" nil nil :exit t) + ("[" nil nil :exit t) + ("]" nil nil :exit t) + ("f" nil)) + + (global-unset-key (kbd "C-o")) + (global-set-key (kbd "C-o") 'sd/hydra-window/body) #+END_SRC +** Edit +- cut, yank, =C-w=, =C-y= +- save, revert +- undo, redo - undo-tree +- select, expand-region +- spell check, flyspell + +** Motion - =C-M-= +Use =Avy= for motion +#+BEGIN_SRC emacs-lisp :tangle yes :results silent + (use-package avy + :ensure t + :config + (avy-setup-default)) + + (global-set-key (kbd "C-M-j") 'avy-goto-line-below) + (global-set-key (kbd "C-M-n") 'avy-goto-line-below) + (global-set-key (kbd "C-M-k") 'avy-goto-line-above) + (global-set-key (kbd "C-M-p") 'avy-goto-line-above) + + (global-set-key (kbd "C-M-f") 'avy-goto-word-1-below) + (global-set-key (kbd "C-M-b") 'avy-goto-word-1-above) + + ;; (global-set-key (kbd "M-g e") 'avy-goto-word-0) + (global-set-key (kbd "C-M-w") 'avy-goto-char-timer) + (global-set-key (kbd "C-M-l") 'avy-goto-char-in-line) + + ;; will delete above + (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) + + ;; 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 + +=imenu=, mapping =C-M-i= to =counsel-imenu= +#+BEGIN_SRC emacs-lisp :tangle yes :results silent + (global-unset-key (kbd "C-M-i")) + (global-set-key (kbd "C-M-i") #'counsel-imenu) +#+END_SRC + +** Search & Replace / hightlight =M-s= +*** search +*** replace +*** hightlight +#+BEGIN_SRC emacs-lisp :tangle yes :results silent + + ;; (defhydra sd/search-highlight (:color red :columns nil) + ;; "search" + ;; ("M-s" . isearch-forward-regexp "search-forward" :exit t) + ;; ("s" . isearch-forward-regexp "search-forward" :exit t) + ;; ("r" . isearch-backward-regexp "search-backward" :exit t) + ;; ) + + ;; (setq-default indicate-empty-lines t) +#+END_SRC + +*** Occur +Occur search key bindings +#+BEGIN_SRC emacs-lisp :tangle yes :results silent + (defun sd/occur-keys () + "My key bindings in occur-mode" + (interactive) + (switch-to-buffer-other-window "*Occur*") + (define-key occur-mode-map (kbd "C-o") nil) + (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)))) + + (add-hook 'occur-hook #'sd/occur-keys) + + (use-package color-moccur + :ensure t + :commands (isearch-moccur isearch-all) + :init + (setq isearch-lazy-highlight t) + :config + (use-package moccur-edit)) +#+END_SRC + +* test +#+BEGIN_SRC ditaa :file temp/hello-world.png :cmdline -r ++--------------+ +| | +| Hello World! | +| | ++--------------+ +#+END_SRC + +#+RESULTS: +[[file:temp/hello-world.png]] + + +* =C-u C-h a= search funtions +=apropos-command=