X-Git-Url: http://47.100.26.94:8080/?a=blobdiff_plain;f=emacs.d%2Fconfig.org;h=0854ef8030024a02b7c718a35f8b442f0be12872;hb=0959aa16ba6280d213421f22190ea5e26e050e2f;hp=166f110b5b5beac562a20630cdb7fdc9795f0379;hpb=770a6c63f6f4cd687ce659ef608b7856acb3f31a;p=dotfiles.git diff --git a/emacs.d/config.org b/emacs.d/config.org index 166f110..0854ef8 100644 --- a/emacs.d/config.org +++ b/emacs.d/config.org @@ -44,7 +44,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 +112,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 @@ -608,9 +609,10 @@ set height in mode line #+BEGIN_SRC emacs-lisp :tangle yes :results silent (use-package ido :ensure t - :init (setq ido-enable-flex-matching nil + :init (setq ido-enable-flex-matching t ido-ignore-extensions t ido-use-virtual-buffers t + ido-use-faces nil ido-everywhere t) (setq ido-save-directory-list-file (concat sd-temp-directory "ido.last")) :config @@ -623,15 +625,6 @@ set height in mode line (define-key ido-file-completion-map (kbd "C-w") #'ido-delete-backward-word-updir) (define-key ido-file-dir-completion-map (kbd "C-w") #'ido-delete-backward-updir) ;; (define-key ido-file-dir-completion-map (kbd "C-i") #'ido-copy-current-word) - - ;; (dolist (map (list - ;; ido-buffer-completion-map - ;; ido-file-completion-map - ;; ido-file-dir-completion-map - ;; ido-common-completion-map)) - ;; (define-key map (kbd "C-w") #'ido-delete-backward-word-updir) - ;; ;; (define-key map (kbd "C-i") #'ido-copy-current-file-name) - ;; ) ) (icomplete-mode t) @@ -641,8 +634,6 @@ set height in mode line #+BEGIN_SRC emacs-lisp :tangle yes :results silent (use-package flx-ido :ensure t - :init (setq ido-enable-flex-matching nil - ido-use-faces nil) :config (flx-ido-mode nil)) #+END_SRC @@ -695,27 +686,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= @@ -1323,9 +1359,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 @@ -1377,9 +1422,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 @@ -1442,7 +1488,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 @@ -1569,6 +1646,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) @@ -1706,8 +1784,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 @@ -1950,7 +2028,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"))) @@ -1958,30 +2036,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 @@ -3090,7 +3165,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 @@ -3591,25 +3666,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 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 ** Expand region map *** Install =expand-region=