emacs - change swiper
[dotfiles.git] / emacs.d / config.org
index 3f93fce..2b5d441 100644 (file)
@@ -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
@@ -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,55 +781,26 @@ Some global bindings on =Super=, on Mac, it is =Command=
 #+END_SRC
 
 ** Search Replace and highlight
-*** Occur
-Occur search key bindings
+*** swiper
 #+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)))
+  ;; (use-package swiper
+  ;;   :ensure t)
 
-  (define-key occur-mode-map (kbd "C-p")
-    (lambda ()
-      (interactive)
-      (occur-prev)
-      (occur-mode-goto-occurrence-other-window)
-      (recenter)
-      (other-window 1)))
+  ;; (ivy-mode 1)
+  ;; (setq ivy-use-virtual-buffers t)
+  ;; (global-set-key (kbd "s-/") 'swiper)
 
-  (use-package color-moccur
+  (use-package counsel
     :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)
+    :defer t)
   ;;* 
   ;; (global-set-key "\C-s" 'swiper)
   ;; (global-set-key (kbd "C-c C-r") 'ivy-resume)
   ;; (global-set-key (kbd "<f6>") '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 "<f1> f") 'counsel-describe-function)
-  ;; (global-set-key (kbd "<f1> 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 "<f1> l") 'counsel-load-library)
   ;; (global-set-key (kbd "<f2> i") 'counsel-info-lookup-symbol)
   ;; (global-set-key (kbd "<f2> u") 'counsel-unicode-char)
@@ -901,6 +811,13 @@ 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")
+
+  ;; ivy-resume
+  ;; (define-key swiper-map (kbd "M-%") 'swiper-aa-replace)
 #+END_SRC
 
 *** =M-s= prefix
@@ -952,10 +869,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
@@ -995,6 +908,14 @@ Always indents header, and hide header leading starts so that no need type =#+ST
   (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
@@ -1462,50 +1383,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)
@@ -1542,9 +1419,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
@@ -2322,6 +2199,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=
@@ -2332,3 +2219,219 @@ new file =C-x C-f C-f=
   (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)
+
+  (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
+
+*** Swiper
+#+BEGIN_SRC emacs-lisp :tangle yes :results silent
+  (use-package swiper
+    :ensure t
+    :init
+    (setq ivy-use-virtual-buffers t)
+    :config
+    (ivy-mode)
+    (global-set-key (kbd "s-/") 'swiper)
+    (define-key swiper-map (kbd "M-r") 'swiper-query-replace))
+
+  (set-face-attribute
+   'ivy-current-match nil
+   :background "Orange"
+   :foreground "black")
+#+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=