emacs - fix bug set cache file before loaded
[dotfiles.git] / emacs.d / config.org
index cc72e83..62bc853 100644 (file)
@@ -692,95 +692,6 @@ Use =ESC= to exit minibuffer. Also I map =Super-h= the same as =C-g=
 
 #+END_SRC
 
-** =Super= bindings for file, buffer and windows
-
-Some global bindings on =Super=, on Mac, it is =Command=
-
-#+BEGIN_SRC emacs-lisp :tangle yes :results silent
-  (defun sd/delete-current-window ()
-    (interactive)
-    (if (> (length (window-list)) 1)
-        (delete-window)
-      (message "Only one Windows now!")))
-
-  ;; (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)
-  ;; (global-set-key (kbd "s-l") 'sd/delete-current-window)
-  ;; s-l  -->  goto-line
-  ;; (global-set-key (kbd "s-/") 'swiper)
-  ;; s-;  -->
-  ;; s-'  -->  'next-multiframe-window
-  (global-set-key (kbd "<s-return>") 'toggle-frame-fullscreen)
-
-  (global-set-key (kbd "s-f") 'projectile-find-file)
-
-  (global-set-key (kbd "s-`") 'mode-line-other-buffer)
-
-  (global-set-key (kbd "s-n") 'persp-next)
-  (global-set-key (kbd "s-p") 'persp-prev)
-
-  (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
-  ;; s-k kill-this-buffer
-
-
-  ;; s-h  -->  ns-do-hide-emacs
-  ;; s-j  -->  ido-switch-buffer  +
-  ;; s-k  -->  kill-this-buffer
-  ;; s-l  -->  goto-line
-  ;; s-;  -->  undefined
-  ;; s-'  -->  next-multiframe-window
-  ;; s-ret --> toggle-frame-fullscreen +
-
-  ;; s-y  -->  ns-paste-secondary
-  ;; s-u  -->  revert-buffer
-  ;; s-i  -->  undefined - but used for iterm globally
-  ;; s-o  -->  used for emacs globally
-  ;; s-p  -->  projectile-persp-switch-project  +  
-  ;; s-[  -->  next-buffer  +    
-  ;; s-]  -->  previous-buffer +
-
-  ;; s-0  -->  undefined
-  ;; s-9  -->  undefined
-  ;; s-8  -->  undefined
-  ;; s-7  -->  undefined
-  ;; s-6  -->  undefined
-  ;; s--  -->  center-line
-  ;; s-=  -->  undefined
-
-  ;; s-n  -->  make-frame
-  ;; s-m  -->  iconify-frame
-  ;; s-b  -->  undefined
-  ;; s-,  -->  customize
-  ;; s-.  -->  undefined
-  ;; s-/  -->  undefined
-
-  ;; s-g  -->  isearch-repeat-forward
-  ;; s-f  -->  projectile-find-file   +
-  ;; s-d  -->  isearch-repeat-background
-  ;; s-s  -->  save-buffer
-  ;; s-a  -->  make-whole-buffer
-
-  ;; s-b  -->  undefined
-  ;; s-v  -->  yank
-  ;; s-c  -->  ns-copy-including-secondary
-
-  ;; s-t  -->  ns-popup-font-panel
-  ;; s-r  -->  undefined
-  ;; s-e  -->  isearch-yanqk-kill
-  ;; s-w  -->  delete-frame
-  ;; s-q  -->  same-buffers-kill-emacs
-
-  ;; s-`  -->  other-frame
-#+END_SRC
-
 ** Search Replace and highlight
 *** swiper
 #+BEGIN_SRC emacs-lisp :tangle yes :results silent
@@ -1315,7 +1226,7 @@ Toggle an eshell in split window below, refer [[http://www.howardism.org/Technic
           (select-window (sd/window-has-eshell)))
       (progn
         (let ((dir default-directory))
-          
+        
           (split-window-vertically (- (/ (window-total-height) 3)))
           (other-window 1)
           (unless (and (boundp 'eshell-buffer-name) (get-buffer eshell-buffer-name))
@@ -1326,8 +1237,8 @@ Toggle an eshell in split window below, refer [[http://www.howardism.org/Technic
           (insert (format "cd %s" dir))
           (eshell-send-input)))))
 
-  (global-unset-key (kbd "M-`"))
-  (global-set-key (kbd "M-`") 'sd/toggle-eshell-here)
+  ;; (global-unset-key (kbd "M-`"))
+  (global-set-key (kbd "s-e") 'sd/toggle-eshell-here)
 #+END_SRC
 
 *** TODO smart display
@@ -1539,30 +1450,6 @@ Type =o= to go to the link
 
 #+END_SRC
 
-** Projectile
-
-#+BEGIN_SRC emacs-lisp :tangle yes :results silent
-
-  (use-package projectile
-    :ensure t
-    :init
-    (setq projectile-enable-caching t)
-    :config
-    (projectile-global-mode t))
-
-  (use-package persp-projectile
-    :ensure t
-    :config
-    (persp-mode)
-    :bind
-    (:map projectile-mode-map
-          ("s-t" . projectile-persp-switch-project)))
-
-  ;; projectile-find-file
-  ;; projectile-switch-buffer
-  ;; projectile-find-file-other-window
-#+END_SRC
-
 ** Which key
 
 [[https://github.com/justbur/emacs-which-key][which-key]] show the key bindings 
@@ -2252,13 +2139,128 @@ new file =C-x C-f C-f=
 * NEXT Key Bindings
 Here are some global key bindings for basic editting
 ** Project operations - =super=
-=projectile= settins
+*** Projectile
+#+BEGIN_SRC emacs-lisp :tangle yes :results silent
+  (use-package projectile
+    :ensure t
+    :init
+    (setq projectile-enable-caching t)
+    (setq projectile-cache-file (concat sd-temp-directory "projectile.cache"))
+    :config
+    (projectile-global-mode t))
+
+  (use-package persp-projectile
+    :ensure t
+    :config
+    (persp-mode)
+    :bind
+    (:map projectile-mode-map
+          ("s-t" . projectile-persp-switch-project)))
+
+  ;; projectile-find-file
+  ;; projectile-switch-buffer
+  ;; projectile-find-file-other-window
+#+END_SRC
+
+*** project config =super= keybindings
+#+BEGIN_SRC emacs-lisp :tangle yes :results silent
+  ;; (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)
+  ;; (global-set-key (kbd "s-l") 'sd/delete-current-window)
+  ;; s-l  -->  goto-line
+  ;; (global-set-key (kbd "s-/") 'swiper)
+  ;; s-;  -->
+  ;; s-'  -->  'next-multiframe-window
+  (global-set-key (kbd "<s-return>") 'toggle-frame-fullscreen)
+
+  (global-set-key (kbd "s-f") 'projectile-find-file)
+  (global-set-key (kbd "s-`") 'mode-line-other-buffer)
+
+  (global-set-key (kbd "s-n") 'persp-next)
+  (global-set-key (kbd "s-p") 'persp-prev)
+
+  (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
+  ;; s-k kill-this-buffer
+
+
+  ;; s-h  -->  ns-do-hide-emacs
+  ;; s-j  -->  ido-switch-buffer  +
+  ;; s-k  -->  kill-this-buffer
+  ;; s-l  -->  goto-line
+  ;; s-;  -->  undefined
+  ;; s-'  -->  next-multiframe-window
+  ;; s-ret --> toggle-frame-fullscreen +
+
+  ;; s-y  -->  ns-paste-secondary
+  ;; s-u  -->  revert-buffer
+  ;; s-i  -->  undefined - but used for iterm globally
+  ;; s-o  -->  used for emacs globally
+  ;; s-p  -->  projectile-persp-switch-project  +  
+  ;; s-[  -->  next-buffer  +    
+  ;; s-]  -->  previous-buffer +
+
+  ;; s-0  -->  undefined
+  ;; s-9  -->  undefined
+  ;; s-8  -->  undefined
+  ;; s-7  -->  undefined
+  ;; s-6  -->  undefined
+  ;; s--  -->  center-line
+  ;; s-=  -->  undefined
+
+  ;; s-n  -->  make-frame
+  ;; s-m  -->  iconify-frame
+  ;; s-b  -->  undefined
+  ;; s-,  -->  customize
+  ;; s-.  -->  undefined
+  ;; s-/  -->  undefined
+
+  ;; s-g  -->  isearch-repeat-forward
+  ;; s-f  -->  projectile-find-file   +
+  ;; s-d  -->  isearch-repeat-background
+  ;; s-s  -->  save-buffer
+  ;; s-a  -->  make-whole-buffer
+
+  ;; s-b  -->  undefined
+  ;; s-v  -->  yank
+  ;; s-c  -->  ns-copy-including-secondary
+
+  ;; s-t  -->  ns-popup-font-panel
+  ;; s-r  -->  undefined
+  ;; s-e  -->  isearch-yanqk-kill
+  ;; s-w  -->  delete-frame
+  ;; s-q  -->  same-buffers-kill-emacs
+
+  ;; s-`  -->  other-frame
+#+END_SRC
+
 ** 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)
 
+  (defun sd/delete-current-window ()
+    (interactive)
+    (if (> (length (window-list)) 1)
+        (delete-window)
+      (message "Only one Windows now!")))
+
+  (defun sd/toggle-max-windows ()
+    "Set maximize current if there are multiple windows, if only
+  one window, window undo"
+    (interactive)
+    (if (equal  (length (window-list)) 1)
+        (winner-undo)
+      (delete-other-windows)))
+
   (defhydra sd/hydra-window (:color red :columns nil)
     "window"
     ("h" windmove-left nil :exit t)
@@ -2279,7 +2281,8 @@ Most use =C-o C-o= to switch buffers; =C-o x, v= to split window; =C-o o= to del
            (split-window-below)
            (windmove-down))
      "horz" :exit t)
-    ("o" delete-other-windows "one" :exit t)
+    ;; ("o" delete-other-windows "one" :exit t)
+    ("o" sd/toggle-max-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)
@@ -2361,16 +2364,23 @@ Stolen [[https://www.masteringemacs.org/article/fixing-mark-commands-transient-m
   ;; (define-key global-map [remap exchange-point-and-mark] 'exchange-point-and-mark-no-activate)
 #+END_SRC
 
-Show the mark ring using =helm-mark-ring=
+Show the mark ring using =helm-mark-ring=, also mapping =M-`= to quit minibuffer. so that =M-`= can 
+toggle the mark ring. the best way is add a new action and mapping to =helm-source-mark-ring=,  but 
+since there is no map such as =helm-mark-ring=map=, so I cannot binding a key to the quit action.
 #+BEGIN_SRC emacs-lisp :tangle yes :results silent
   (global-set-key (kbd "M-`") #'helm-mark-ring)
+
+  (define-key minibuffer-local-map (kbd "M-`") 'keyboard-escape-quit)
 #+END_SRC
 
 =M-h= marks the next paragraph
 =C-x h= marks the whole buffer
 =C-M-h= marks the next defun
 =C-x C-p= marks the next page
-**** TODO Mapping toggle mark ring=
+**** DONE Mapping toggle mark ring=
+:LOGBOOK:
+- State "DONE"       from "TODO"       [2016-07-22 Fri 23:18]
+:END:
 *** Registers
 Registers can save text, position, rectangles, file and configuration and other things.
 Here for movement, we can use register to save/jump position
@@ -2409,33 +2419,26 @@ Search, replace and hightlight will in later paragraph
   (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
+  ;; ;; 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)
 #+END_SRC
 
 *** =Imenu= goto tag
 #+BEGIN_SRC emacs-lisp :tangle yes :results silent
-  ;; (global-unset-key (kbd "C-M-i"))
-  ;; (global-set-key (kbd "C-M-i") #'counsel-imenu)
-  (global-set-key (kbd "M-i") #'counsel-imenu)
+  ;; (global-set-key (kbd "M-i") #'counsel-imenu)
+  (global-set-key (kbd "M-i") #'imenu)
+
+  ;; (global-set-key (kbd "M-l") 'goto-line)
+#+END_SRC
 
+*** Go-to line
+#+BEGIN_SRC emacs-lisp :tangle yes :results silent
   (global-set-key (kbd "M-l") 'goto-line)
 #+END_SRC
 
@@ -2446,16 +2449,20 @@ Search, replace and hightlight will in later paragraph
 =M-c=, toggle case sensitivity
 =M-n=, =M-p=, history
 **** tagss
-**** got-to-line
-
-
-
 ** Edit
+*** basic editting
 - cut, yank, =C-w=, =C-y=
 - save, revert
 - undo, redo - undo-tree
 - select, expand-region
 - spell check, flyspell
+
+*** Kill ring
+=helm-show-kill-ring=
+#+BEGIN_SRC emacs-lisp :tangle yes :results silent
+  (global-set-key (kbd "M-y") #'helm-show-kill-ring)
+#+END_SRC
+
 ** Search & Replace / hightlight =M-s=
 *** search
 *** replace
@@ -2524,32 +2531,41 @@ stolen from [[https://github.com/mariolong/emacs.d/blob/f6a061594ef1b5d1f4750e9d
                                          (insert (format "%s" (with-ivy-window (thing-at-point 'symbol)))))))
 #+END_SRC
 
+* Dictionary
+#+BEGIN_SRC emacs-lisp :tangle yes :results silent
+  (use-package bing-dict
+    :ensure t
+    :init
+    (global-set-key (kbd "s-d") 'bing-dict-brief)
+    :commands (bing-dict-brief))
+#+END_SRC
+
 * TODO Temp directory for cached/history/temp files
 #+BEGIN_SRC emacs-lisp :tangle yes :results silent
   (use-package recentf
-    :config
+    :init
     (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 projectile
+  ;;   :init
+  ;;   (setq projectile-cache-file (concat sd-temp-directory "projectile.cache")))
 
   (use-package ido
-    :config
+    :init
     (setq ido-save-directory-list-file (concat sd-temp-directory "ido.last")))
 
   (use-package savehist
-    :config
+    :init
     (setq savehist-file (concat sd-temp-directory "history")))
 
   (use-package emms
-    :config
+    :init
     (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
+    :init
     (setq smex-save-file (concat sd-temp-directory "smex-items")))
 #+END_SRC