X-Git-Url: http://47.100.26.94:8080/?a=blobdiff_plain;f=emacs.d%2Fconfig.org;h=6b3476ef727a963d71874bc357f1ea33619ab045;hb=9536eb7be7c32ee135578647a0276514a6aa54fc;hp=aa75064ba19b6b7836643e5bc8484b28fe6ec190;hpb=ec3015036271d6b57b8f5f20b75643629a22e046;p=dotfiles.git diff --git a/emacs.d/config.org b/emacs.d/config.org index aa75064..6b3476e 100644 --- a/emacs.d/config.org +++ b/emacs.d/config.org @@ -32,6 +32,8 @@ Set system PATH and emacs exec path #+BEGIN_SRC emacs-lisp :tangle yes :results silent (defconst my-name "Peng Li") (defconst my-email "seudut@gmail.com") + (defconst MY-EMACS-DIR (concat (getenv "HOME") "/.emacs.d")) + (defconst MY-EMACS-TMP (concat MY-EMACS-DIR "/temp")) #+END_SRC ** General Setting @@ -44,7 +46,7 @@ Set system PATH and emacs exec path (menu-bar-mode 1)) (menu-bar-mode 0)) - (setq debug-on-error t) + ;; (setq debug-on-error t) (setq inhibit-startup-message t) (defalias 'yes-or-no-p 'y-or-n-p) @@ -112,6 +114,7 @@ Make a temp directory for all cache/history files ;; set temp file path for recentf and auto-save (setq recentf-save-file (concat sd-temp-directory "recentf")) + (setq recentf-max-saved-items 1000) (setq auto-save-list-file-prefix (concat sd-temp-directory "auto-save-list/.saves-")) #+END_SRC @@ -685,27 +688,72 @@ Use [[https://github.com/DarwinAwardWinner/ido-ubiquitous][ido-ubiquitous]] for ido-file-dir-completion-map))) #+END_SRC -** Counsel +** helm +let helm windows split inside current window +#+BEGIN_SRC emacs-lisp :tangle yes :results silent + (with-eval-after-load 'helm + (setq helm-split-window-in-side-p t)) +#+END_SRC + +* Swiper & Ivy & Counsel #+BEGIN_SRC emacs-lisp :tangle yes :results silent (use-package counsel :ensure t :defer t :init + (use-package ivy :ensure t) + (ivy-mode 1) + (setq ivy-use-virtual-buffers nil + ivy-wrap t) + (set-face-attribute 'ivy-current-match nil :background "Orange" :foreground "black") (global-set-key (kbd "M-x") 'counsel-M-x) - (global-set-key (kbd "C-h f") 'counsel-describe-function) - (global-set-key (kbd "C-h v") 'counsel-describe-variable) - ;; (set-face-attribute 'ivy-current-match nil :background "Orange" :foreground "black") + ;; (global-set-key (kbd "C-h f") 'counsel-describe-function) + ;; (global-set-key (kbd "C-h v") 'counsel-describe-variable) + (global-set-key (kbd "C-x C-f") 'counsel-find-file) (define-key read-expression-map (kbd "C-r") 'counsel-expression-history) (global-set-key (kbd "C-c C-r") 'ivy-resume)) + + (use-package counsel-projectile + :ensure t + :defer t) #+END_SRC -** helm -let helm windows split inside current window #+BEGIN_SRC emacs-lisp :tangle yes :results silent - (with-eval-after-load 'helm - (setq helm-split-window-in-side-p t)) + (defun sd/swith-buffer-other-window () + (interactive) + (ivy-set-action (cond ((eq (ivy-state-caller ivy-last) 'ivy-switch-buffer) + 'ivy--switch-buffer-other-window-action) + ((eq (ivy-state-caller ivy-last) 'counsel-recentf) + 'find-file-other-window) + ((eq (ivy-state-caller ivy-last) 'counsel-projectile-find-file) + 'counsel-projectile-find-file-action-other-window) + (t + nil))) + (ivy-done) + (ivy-shrink-after-dispatching)) + + (with-eval-after-load "ivy" + (define-key ivy-minibuffer-map (kbd "C-o") 'ivy-dispatching-done) + (define-key ivy-minibuffer-map (kbd "C-k") #'sd/swith-buffer-other-window)) #+END_SRC +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 + :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 * Org-mode Settings ** Org-mode Basic setting Always indents header, and hide header leading starts so that no need type =#+STATUP: indent= @@ -1313,9 +1361,18 @@ set default eshell history folder ;; (add-hook 'eshell-mode-hook (lambda () ;; (local-set-key (kbd "C-l") 'sd/eshell-clear-buffer))) - (add-hook 'eshell-mode-hook (apply-partially #'local-set-key (kbd "C-l") 'sd/eshell-clear-buffer)) ;; (add-hook 'eshell-mode-map (lambda () (interactive) ;; (define-key eshell-mode-map (kbd "") 'completion-at-point))) + + (defun sd/eshell-hook () + (interactive) + (define-key eshell-mode-map (kbd "C-j") #'eshell-send-input) + (define-key eshell-mode-map (kbd "C-l") #'sd/eshell-clear-buffer)) + + (add-hook 'eshell-mode-hook #'sd/eshell-hook) + + + ;; (add-hook 'eshell-mode-hook (apply-partially #'local-set-key (kbd "C-l") 'sd/eshell-clear-buffer)) #+END_SRC ** Toggle Eshell @@ -1367,9 +1424,10 @@ Toggle an eshell in split window below, refer [[http://www.howardism.org/Technic *** hydra install #+BEGIN_SRC emacs-lisp :tangle yes :results silent (use-package hydra - :ensure t) - ;; disable new line in minibuffer when hint hydra - (setq hydra-lv nil) + :ensure t + ;; disable new line in minibuffer when hint hydra + :init + (setq hydra-lv nil)) #+END_SRC *** Windmove Splitter @@ -1432,7 +1490,38 @@ Refer [[https://github.com/abo-abo/hydra/blob/master/hydra-examples.el][hydra-ex ("q" nil "quit") ("f" nil "quit")) - (global-set-key (kbd "C-'") 'sd/hydra-misc/body) + ;; (global-set-key (kbd "C-'") 'sd/hydra-misc/body) + + (defun sd/exchange-win-layout () + "Change the windos layout." + (interactive) + (when (equal (length (window-list)) 2) + (let ((current-layout (if (or (window-in-direction 'right) (window-in-direction 'left)) + 'v + 'h)) + (other-buf (window-buffer (or (window-in-direction 'right) + (window-in-direction 'left) + (window-in-direction 'below) + (window-in-direction 'above))))) + (delete-other-windows) + (if (eq current-layout 'v) + (split-window-below) + (split-window-right)) + (other-window 1) + (switch-to-buffer other-buf)))) + + (defhydra sd/hydra-window-layout (:color red :colums nil) + "Window Layout" + ("m" sd/toggle-max-windows "Max-win" :exit t) + ("s" ace-swap-window "Swap" :exit t) + ("d" ace-delete-window "Delete" :exit t) + ("x" sd/exchange-win-layout "eXchange" :exit t) + ("u" winner-undo "window-Undo" :exit t) + ("r" winner-redo "window-Redo" :exit t)) + + ;; (with-eval-after-load "evil" + ;; (define-key evil-normal-state-map (kbd ";t") 'sd/hydra-window-layout/body)) + #+END_SRC *** hydra launcher @@ -1559,6 +1648,7 @@ When see function by =C-h f=, and visit the source code, I would like the buffer ;; (eval . (when buffer-file-name ;; (setq-local view-no-disable-on-exit t) ;; (view-mode-enter))) + (projectile-enable-caching . nil) )))) ;; (dir-locals-set-directory-class (expand-file-name "/usr/local/share/emacs") 'emacs) @@ -1696,8 +1786,8 @@ Wiki [[http://stackoverflow.com/questions/3480173/show-keys-in-emacs-keymap-valu ** goto-last-change #+BEGIN_SRC emacs-lisp :tangle yes :results silent - (use-package goto-last-change - :ensure t) + ;; (use-package goto-last-change + ;; :ensure t) #+END_SRC ** Ag @@ -1940,7 +2030,7 @@ here on Mac, just use "open" commands to pen =.pdf=, =.html= and image files ("\\.csv\\'" "libreoffice") ("\\.tex\\'" "pdflatex" "latex") ("\\.\\(?:mp4\\|mkv\\|avi\\|rmvb\\|flv\\|ogv\\)\\(?:\\.part\\)?\\'" "mplayer") - ("\\.\\(?:mp3\\|flac\\)\\'" "rhythmbox") + ("\\.\\(?:mp3\\|flac\\|wav\\)\\'" "mplayer") ("\\.html?\\'" "open") ("\\.dmg\\'" "open") ("\\.cue?\\'" "audacious"))) @@ -1948,30 +2038,27 @@ here on Mac, just use "open" commands to pen =.pdf=, =.html= and image files (defun sd/dired-start-process (cmd &optional file-list) (interactive - (let ((files (dired-get-marked-files - t current-prefix-arg))) + (let ((files (dired-get-marked-files t current-prefix-arg))) (list - (unless (eq system-type 'windows-nt) - (dired-read-shell-command "& on %s: " - current-prefix-arg files)) + (dired-read-shell-command "& on %s: " current-prefix-arg files) files))) - (if (eq system-type 'windows-nt) - (dolist (file file-list) - (w32-shell-execute "open" (expand-file-name file))) - (let (list-switch) - (start-process - cmd nil shell-file-name - shell-command-switch - (format - "nohup 1>/dev/null 2>/dev/null %s \"%s\"" - cmd - ;; (if (and (> (length file-list) 1) - ;; (setq list-switch - ;; (cadr (assoc cmd ora-dired-filelist-cmd)))) - ;; (format "%s %s" cmd list-switch) - ;; cmd) - (mapconcat #'expand-file-name file-list "\" \"")))))) + ;; (let (list-switch)) + (start-process + cmd nil shell-file-name + shell-command-switch + (format + "nohup 1>/dev/null 2>/dev/null %s \"%s\"" + cmd + ;; (if (and (> (length file-list) 1) + ;; (setq list-switch + ;; (cadr (assoc cmd ora-dired-filelist-cmd)))) + ;; (format "%s %s" cmd list-switch) + ;; cmd) + (mapconcat #'expand-file-name file-list "\" \"")))) + + + #+END_SRC ** dired-hacks @@ -2035,6 +2122,8 @@ here on Mac, just use "open" commands to pen =.pdf=, =.html= and image files (use-package company-statistics :ensure t + :init + (setq company-statistics-file (concat MY-EMACS-TMP "/company-statistics-cache.el")) :config (company-statistics-mode)) @@ -2413,6 +2502,9 @@ irony-company (require 'cc-mode) (require 'semantic) + (setq semanticdb-default-save-directory (concat MY-EMACS-TMP "/semantic/")) + (unless (file-exists-p semanticdb-default-save-directory) + (make-directory semanticdb-default-save-directory)) (global-semanticdb-minor-mode 1) (global-semantic-idle-scheduler-mode 1) @@ -3080,7 +3172,7 @@ Use =ESC= to exit minibuffer. Also I map =Super-h= the same as =C-g= ;; https://emacs.stackexchange.com/questions/16497/how-to-exclude-files-from-projectile - (setq projectile-enable-caching t) + ;; (setq projectile-enable-caching t) (if (executable-find "rg") (progn (defconst modi/rg-arguments @@ -3581,29 +3673,6 @@ Occur search key bindings (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 nil) - (setq ivy-wrap 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))))))) - - (with-eval-after-load "ivy" - (define-key ivy-minibuffer-map (kbd "C-o") 'ivy-dispatching-done)) -#+END_SRC ** Expand region map *** Install =expand-region=