emacs - swiper tidyup
[dotfiles.git] / emacs.d / config.org
index 24a682d..bc97b89 100644 (file)
@@ -7,7 +7,6 @@
 Most config are just copied from [[https://github.com/howardabrams/dot-files][howardabrams]]'s and [[https://github.com/abo-abo/oremacs][abo-abo's]] dotfiles
 
 * Basic Settings
-
 ** Setting loading Path
 
 Set system PATH and emacs exec path
@@ -42,10 +41,8 @@ Set the emacs load path
 
 #+END_SRC       
 
-** Window Setting
-
-Disable scroll bar, tool-bar and menu-bar
-
+** General Setting
+*** scroll bar, tool-bar and menu-bar
 #+BEGIN_SRC emacs-lisp :tangle yes :results silent
   (scroll-bar-mode 0)
   (tool-bar-mode 0)
@@ -60,38 +57,26 @@ Disable scroll bar, tool-bar and menu-bar
   (setq make-backup-files nil)
 #+END_SRC
 
-set custom file 
-
+*** Custom file 
 #+BEGIN_SRC emacs-lisp :tangle yes :results silent 
-
   (setq custom-file "~/.emacs.d/custom.el")
   (if (file-exists-p custom-file)
       (load custom-file))
-
 #+END_SRC
 
-Switch the focus to help window when it appears
-
+*** Switch the focus to help window when it appears
 #+BEGIN_SRC emacs-lisp :tangle yes :results silent
-
   (setq help-window-select t)
-
-#+END_SRC
-
-Setting scroll right/left
-#+BEGIN_SRC emacs-lisp :tangle yes :results silent
-  ;  (global-set-key (kbd "C-,") 'scoll-left)
-  ;  (global-set-key (kbd "C-.") 'scoll-right)
 #+END_SRC
 
-Set default window size
+*** Set default window size
 #+BEGIN_SRC emacs-lisp :tangle yes :results silent
   (setq initial-frame-alist
         '((width . 120)
           (height . 50)))
 #+END_SRC
 
-Stop auto save
+*** Stop auto save
 #+BEGIN_SRC emacs-lisp :tangle yes :results silent
   (setq auto-save-default nil)
 
@@ -99,6 +84,22 @@ Stop auto save
   ;; (desktop-save-mode t)
 #+END_SRC
 
+*** Save minibuffer history
+#+BEGIN_SRC emacs-lisp :tangle yes :results silent
+  (savehist-mode 1)
+  (setq history-length 1000)
+#+END_SRC
+
+*** temp folder
+Make a temp directory for all cache/history files
+#+BEGIN_SRC emacs-lisp :tangle yes :results silent
+  (defconst sd-temp-directory
+    (file-name-as-directory "~/.emacs.d/temp"))
+
+  (unless (file-exists-p sd-temp-directory)
+    (mkdir sd-temp-directory))
+#+END_SRC
+
 * Package Management Tools
 
 ** Use-package
@@ -668,9 +669,6 @@ Make flyspell enabled for org-mode, see [[http://emacs.stackexchange.com/questio
     (global-set-key (kbd "C-=") 'er/expand-region))
 #+END_SRC
 
-** Motion
-** Search & highlight
-
 * Key bindings
 
 ** Esc on Minibuffer
@@ -694,45 +692,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=
@@ -823,47 +782,14 @@ 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
-    :ensure t)
+  ;; (use-package swiper
+  ;;   :ensure t)
 
-  (ivy-mode 1)
-  (setq ivy-use-virtual-buffers t)
-  (global-set-key (kbd "s-/") 'swiper)
+  ;; (ivy-mode 1)
+  ;; (setq ivy-use-virtual-buffers t)
+  ;; (global-set-key (kbd "s-/") 'swiper)
 
   (use-package counsel
     :ensure t
@@ -886,10 +812,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")
+  ;; (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
@@ -941,10 +870,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
@@ -984,6 +909,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
@@ -1337,6 +1270,12 @@ and Defined keys, using vi keybindings, Refer abo-abo's setting [[https://github
   (defalias 'ee 'find-files)
 #+END_SRC
 
+*** eshell temp directory
+set default eshell history folder
+#+BEGIN_SRC emacs-lisp :tangle yes :results silent
+  (setq eshell-directory-name (concat  sd-temp-directory "eshell"))
+#+END_SRC
+
 *** Eshell erase buffer
 #+BEGIN_SRC emacs-lisp :tangle yes :results silent
   (defun sd/eshell-clear-buffer ()
@@ -1487,9 +1426,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
@@ -2350,20 +2289,20 @@ Most use =C-o C-o= to switch buffers; =C-o x, v= to split window; =C-o o= to del
     ("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")
-    ("M" bookmark-set "set bmk")
+    ("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 :exit t)
-    ("C-j" nil :exit t)
+    ("C-h" nil nil :exit t)
+    ("C-j" nil nil :exit t)
     ;; ("C-k" nil :exit t)
-    ("C-l" nil :exit t)
-    ("C-;" nil :exit t)
-    ("p" nil :exit t)
-    ("n" nil :exit t)
-    ("[" nil :exit t)
-    ("]" 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"))
@@ -2376,15 +2315,14 @@ Most use =C-o C-o= to switch buffers; =C-o x, v= to split window; =C-o o= to del
 - undo, redo - undo-tree
 - select, expand-region
 - spell check, flyspell
-- 
-** Motion - =M=g=
+
+** Motion - =C-M-=
 Use =Avy= for motion
 #+BEGIN_SRC emacs-lisp :tangle yes :results silent
   (use-package avy
     :ensure t
     :config
-    (avy-setup-default)
-    )
+    (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)
@@ -2419,7 +2357,121 @@ Use =Avy= for motion
   ;; 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
+stolen from [[https://github.com/mariolong/emacs.d/blob/f6a061594ef1b5d1f4750e9dad9dc97d6e122840/emacs-init.org][here]]
+#+BEGIN_SRC emacs-lisp :tangle yes :results silent
+  (use-package swiper
+    :ensure t
+    :init
+    (setq ivy-use-virtual-buffers t)
+    (set-face-attribute 'ivy-current-match nil :background "Orange" :foreground "black")
+    :config
+    (ivy-mode)
+    (global-set-key (kbd "s-/") 'swiper)
+    (define-key swiper-map (kbd "M-r") 'swiper-query-replace)
+    (define-key swiper-map (kbd "C-.") (lambda ()
+                                         (interactive)
+                                         (insert (format "%s" (with-ivy-window (thing-at-point 'word))))))
+    (define-key swiper-map (kbd "M-.") (lambda ()
+                                         (interactive)
+                                         (insert (format "%s" (with-ivy-window (thing-at-point 'symbol)))))))
+#+END_SRC
+
+* TODO Temp directory for cached/history/temp files
+#+BEGIN_SRC emacs-lisp :tangle yes :results silent
+  (use-package recentf
+    :config
+    (setq recentf-save-file (concat sd-temp-directory "recentf")))
+
+  (use-package projectile
+    :config
+    (setq projectile-cache-file (concat sd-temp-directory "projectile.cache")))
+
+  (use-package ido
+    :config
+    (setq ido-save-directory-list-file (concat sd-temp-directory "ido.last")))
+
+  (use-package savehist
+    :config
+    (setq savehist-file (concat sd-temp-directory "history")))
+
+  (use-package emms
+    :config
+    (setq emms-directory (concat sd-temp-directory "emms")))
+
+  (setq auto-save-list-file-prefix (concat sd-temp-directory "auto-save-list/.saves-")) 
+
+  (use-package smex
+    :config
+    (setq smex-save-file (concat sd-temp-directory "smex-items")))
+#+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=