X-Git-Url: http://47.100.26.94:8080/?a=blobdiff_plain;f=emacs.d%2Fconfig.org;h=62bc853c48282384b05d5d4243347dec077107f4;hb=02ad6c28c12487580b25b8cecb70765b13047ed4;hp=24a682dc8496996c9abec0269a5afa20fffb06c2;hpb=549cdd7827c1092c2e511af2b112bb98fbb07288;p=dotfiles.git diff --git a/emacs.d/config.org b/emacs.d/config.org index 24a682d..62bc853 100644 --- a/emacs.d/config.org +++ b/emacs.d/config.org @@ -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,176 +692,15 @@ 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= - -#+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 "") '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 -*** 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 +723,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 +781,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 +820,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 +1181,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 () @@ -1376,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)) @@ -1387,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 @@ -1487,9 +1337,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 @@ -1600,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 @@ -2313,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 "") '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) @@ -2340,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) @@ -2350,41 +2292,120 @@ 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")) (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 - =M=g= -Use =Avy= for motion +** Motion +- =C-M-= +[[https://www.masteringemacs.org/article/effective-editing-movement][effective-editing-movement]] +*** Command Arguments, numeric argumens +=C-u 4= same as =C-4=, =M-4= +*** Basic movement +moving by line / word / +=C-f=, =C-b=, =C-p=, =C-n=, =M-f=, =M-b= +=C-a=, =C-e= +=M-m= (move first non-whitespace on this line) +=M-}=, =M-{=, Move forward end of paragraph +=M-a=, =M-e=, beginning / end of sentence +=C-M-a=, =C-M-e=, move begining of defun +=C-x ]=, =C-x [=, forward/backward one page +=C-v=, =M-v=, =C-M-v=, =C-M-S-v= scroll down/up +=M-<=, =M->=, beginning/end of buffer +=M-r=, Repositiong point + +*** Moving by S-expression / List +*** Marks +=C-= set marks toggle the region +=C-u C-= Jump to the mark, repeated calls go further back the mark ring +=C-x C-x= Exchanges the point and mark. + +Stolen [[https://www.masteringemacs.org/article/fixing-mark-commands-transient-mark-mode][fixing-mark-commands-transient-mark-mode]] +#+BEGIN_SRC emacs-lisp :tangle yes :results silent + (defun push-mark-no-activate () + "Pushes `point' to `mark-ring' and does not activate the region + Equivalent to \\[set-mark-command] when \\[transient-mark-mode] is disabled" + (interactive) + (push-mark (point) t nil) + (message "Pushed mark to ring")) + + ;; (global-set-key (kbd "C-`") 'push-mark-no-activate) + + (defun jump-to-mark () + "Jumps to the local mark, respecting the `mark-ring' order. + This is the same as using \\[set-mark-command] with the prefix argument." + (interactive) + (set-mark-command 1)) + + ;; (global-set-key (kbd "M-`") 'jump-to-mark) + + (defun exchange-point-and-mark-no-activate () + "Identical to \\[exchange-point-and-mark] but will not activate the region." + (interactive) + (exchange-point-and-mark) + (deactivate-mark nil)) + + ;; (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=, 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 +**** 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 +=C-x r SPC= store point in register +=C-x r j= jump to register +#+BEGIN_SRC emacs-lisp :tangle yes :results silent + (use-package list-register + :ensure t) +#+END_SRC + +*** Bookmarks +As I would like use bookmakr for different buffer/files. to help to swith +different buffer/file quickly. this setting is in Windows/buffer node +=C-x r m= set a bookmarks +=C-x r l= list bookmarks +=C-x r b= jump to bookmarks + +*** Search +Search, replace and hightlight will in later paragraph +*** =Avy= for easy 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) @@ -2398,28 +2419,236 @@ Use =Avy= for motion (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) + ;; ;; 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-set-key (kbd "M-i") #'counsel-imenu) + (global-set-key (kbd "M-i") #'imenu) - ;; 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 + ;; (global-set-key (kbd "M-l") 'goto-line) +#+END_SRC - ;; M-g M-g goto-line - ;; M-g M-n next-error - ;; M-g M-p previous-error +*** Go-to line +#+BEGIN_SRC emacs-lisp :tangle yes :results silent + (global-set-key (kbd "M-l") 'goto-line) +#+END_SRC + +*** Movement effective +**** isearch +=C-s=, =C-r= +=C-w=, put the word into search minibuffer, =M-y= +=M-c=, toggle case sensitivity +=M-n=, =M-p=, history +**** tagss +** 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 *** 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 + +* 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 + :init + (setq recentf-save-file (concat sd-temp-directory "recentf"))) + + ;; (use-package projectile + ;; :init + ;; (setq projectile-cache-file (concat sd-temp-directory "projectile.cache"))) + + (use-package ido + :init + (setq ido-save-directory-list-file (concat sd-temp-directory "ido.last"))) + + (use-package savehist + :init + (setq savehist-file (concat sd-temp-directory "history"))) + + (use-package emms + :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 + :init + (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]] + +#+BEGIN_SRC ditaa :file temp/hello.png + +------------+ + | | + | hello | + | | + +------------+ + + +#+END_SRC + +#+RESULTS: +[[file:temp/hello.png]] + +* =C-u C-h a= search funtions +=apropos-command= + +* TODO Questions +- interactive for anonymous function +When define a key to a anonymous function, the lambda function should be interactive + +#+BEGIN_SRC emacs-lisp :tangle yes :results silent + ;; (require 'saveplace) + ;; (setq-default save-place t) + ;; (delete-selection-mode 1) +#+END_SRC + + +* M prefix +#+BEGIN_SRC emacs-lisp :tangle yes :results silent + + ;; M-h - mark-paragraph + ;; M-j - new line indent + ;; M-k - kill-sentence + ;; M-l - downcase words ====== goto-line + ;; M-; - comments + ;; M-'- abbrev-prefix-mark ======= + ;; M-RET none ====== + + ;; M-y - yank + ;; M-u - upcase word + ;; M-i - ====== imenu + ;; M-o ====== prefix + ;; M-p + ;; M-[ ===== + ;; M-] ======== + ;; M-\ deleter horizontal space ===== + + ;; M-n + ;; M-m ---- indent + ;; M-, --- mark stack====== = + ;; M-. lisp-goto-symboo, find definitation + + ;; M-a + ;; M-s ===== + ;; M-d + ;; M-f + ;; M-g - prefix + + ;; M-q - lisp fill, fill paragraph + ;; M-w + ;; M-e + ;; M-r - rePositioning + ;; M-t transpose word + + ;; M-z zap-to-char + ;; M-x + ;; M-c capitalize-word + ;; M-v + ;; M-b +#+END_SRC +