X-Git-Url: http://47.100.26.94:8080/?a=blobdiff_plain;f=emacs.d%2Fconfig.org;h=9c1ade440ff9c50f9e9ab26b481f20e5feeb861e;hb=2122f5e2cc9db2e106e70d1b3d47e698436ad303;hp=6ad405708318c6df6f3684f5062ef17ae866193f;hpb=1813e0b994e7312422f50cdef1cd39a940f290a3;p=dotfiles.git diff --git a/emacs.d/config.org b/emacs.d/config.org index 6ad4057..9c1ade4 100644 --- a/emacs.d/config.org +++ b/emacs.d/config.org @@ -38,7 +38,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) @@ -133,17 +133,6 @@ Check out [[http://tapoueh.org/emacs/el-get.html][el-get]]. :ensure t) #+END_SRC -* Mac Specific -#+BEGIN_SRC emacs-lisp :tangle yes :results silent - ;; (defconst *is-a-mac* (eq system-type 'darwin)) - ;; (setq mouse-wheel-scroll-amount '(1 - ;; ((shift) . 5) - ;; ((control)))) - - - ;; (setq-default indicate-empty-lines t) -#+END_SRC - * Color and Fonts Settings ** highlight current line #+BEGIN_SRC emacs-lisp :tangle yes :results silent @@ -267,6 +256,8 @@ Loading theme should be after all required loaded, refere [[https://github.com/j #+BEGIN_SRC emacs-lisp :tangle yes :results silent (setq vc-follow-symlinks t) + (use-package molokai-theme + :ensure t) (use-package color-theme :ensure t @@ -406,7 +397,8 @@ Enable rainbow mode in emacs lisp mode ** cusor color #+BEGIN_SRC emacs-lisp :tangle yes :results silent - (set-cursor-color 'red) + (if (display-graphic-p) + (set-cursor-color 'red)) #+END_SRC * Mode-line @@ -523,7 +515,8 @@ Revised powerline-center-theme '("%e" (:eval (let* ((active (powerline-selected-window-active)) - (mode-line-buffer-id (if active 'sd/mode-line-buffer-id 'mode-line-buffer-id-inactive)) + ;; (mode-line-buffer-id (if active 'sd/mode-line-buffer-id 'mode-line-buffer-id-inactive)) + (mode-line-buffer-id (if active 'sd/mode-line-buffer-id 'powerline-inactive1)) (mode-line (if active 'mode-line 'mode-line-inactive)) (my-face1 (if active 'sd/powerline-active1 'powerline-inactive1)) (my-face-buffer-modified (if (and (sd/buffer-is-eshel-or-scratch) (buffer-modified-p) (not buffer-read-only)) @@ -582,13 +575,17 @@ Fix the issue in mode line when showing triangle set height in mode line #+BEGIN_SRC emacs-lisp :tangle yes :results silent + (defconst sd/mode-line-font-heigh 100 + "Defaulet the fontsize on mode line.") + (with-eval-after-load "powerline" - (let* ((base-font-size (face-attribute 'default :height))) - ;; 100/140;0.8 - (set-variable 'powerline-height (/ base-font-size 10)) - (set-variable 'powerline-text-scale-factor (/ (float 100) base-font-size))) - (set-face-attribute 'mode-line nil :height 100) - (set-face-attribute 'mode-line-inactive nil :height 100)) + (when (display-graphic-p) + (set-face-attribute 'mode-line-inactive nil :height sd/mode-line-font-heigh) + (set-face-attribute 'mode-line nil :height sd/mode-line-font-heigh) + (let* ((base-font-size (face-attribute 'default :height))) + ;; 100/140;0.8 + (set-variable 'powerline-height (/ base-font-size 10)) + (set-variable 'powerline-text-scale-factor (/ (float sd/mode-line-font-heigh) base-font-size))))) #+END_SRC * IDO & SMEX @@ -679,28 +676,6 @@ Use [[https://github.com/DarwinAwardWinner/ido-ubiquitous][ido-ubiquitous]] for ;; (set-face-attribute 'ivy-current-match nil :background "Orange" :foreground "black") (define-key read-expression-map (kbd "C-r") 'counsel-expression-history) (global-set-key (kbd "C-c C-r") 'ivy-resume)) - - - - ;; (global-set-key "\C-s" 'swiper) - ;; (global-set-key (kbd "") 'ivy-resume) - ;; ;; (global-set-key (kbd "C-x C-f") 'counsel-find-file) - ;; (global-set-key (kbd " l") 'counsel-load-library) - ;; (global-set-key (kbd " i") 'counsel-info-lookup-symbol) - ;; (global-set-key (kbd " u") 'counsel-unicode-char) - ;; (global-set-key (kbd "C-c g") 'counsel-git) - ;; (global-set-key (kbd "C-c j") 'counsel-git-grep) - ;; (global-set-key (kbd "C-c k") 'counsel-ag) - ;; (global-set-key (kbd "C-x l") 'counsel-locate) - ;; (global-set-key (kbd "C-S-o") 'counsel-rhythmbox) - - ;; (set-face-attribute - ;; 'ivy-current-match nil - ;; :background "Orange" - ;; :foreground "black") - - ;; ivy-resume - ;; (define-key swiper-map (kbd "M-%") 'swiper-aa-replace) #+END_SRC ** helm @@ -732,11 +707,38 @@ Always indents header, and hide header leading starts so that no need type =#+ST (add-to-list 'org-modules 'org-habit) (setq org-habit-graph-column 50) (setq org-hide-emphasis-markers t) - (setq org-html-validation-link nil)) + (setq org-html-validation-link nil) + ;; open link when return clicked + (setq org-return-follows-link t) + ;; open the ppt file by external open instead of emacs + (add-to-list 'org-file-apps '("\\.pptx" . "open %s")) + (add-to-list 'org-file-apps '("\\.doc" . "open %s")) + (setq org-image-actual-width nil)) +#+END_SRC + +** Org babel +#+BEGIN_SRC emacs-lisp :tangle yes :results silent (el-get-bundle hasu/emacs-ob-racket :features ob-racket) + ;; Lua support + ;(use-package ob-lua + ; :ensure t) + + ;; use current window for org source buffer editting + + (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)) + (org-babel-do-load-languages 'org-babel-load-languages '((python . t) (C . t) @@ -745,7 +747,7 @@ Always indents header, and hide header leading starts so that no need type =#+ST (latex . t) (java . t) (ruby . t) - (lua . t) + ; (lua . t) (lisp . t) (scheme . t) (racket . t) @@ -753,24 +755,38 @@ Always indents header, and hide header leading starts so that no need type =#+ST (sqlite . t) (js . t) (gnuplot . t) - (ditaa . t))) + (ditaa . t) + (plantuml . t))) - ;; use current window for org source buffer editting - (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) + ;; toggle image preview + (add-hook 'org-babel-after-execute-hook 'sd/display-inline-images 'append) - ;; 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)) + (defun sd/display-inline-images () + (condition-case nil + (org-display-inline-images) + (error nil))) - ;; Lua support - (use-package ob-lua + ;; ditaa artist mode + (with-eval-after-load "artist" + (define-key artist-mode-map [down-mouse-3] 'artist-mouse-choose-operation)) +#+END_SRC +*** plantUML +[[http://eschulte.github.io/babel-dev/DONE-integrate-plantuml-support.html][DONE-integrate-plantuml-support]] +#+BEGIN_SRC sh + ## support plantuml + brew install plantuml +#+END_SRC + +#+BEGIN_SRC emacs-lisp :tangle yes :results silent + (use-package plantuml-mode :ensure t) + + (setq org-plantuml-jar-path + (expand-file-name "/usr/local/Cellar/plantuml/8041/plantuml.8041.jar")) + + (set-variable 'plantuml-jar-path + (expand-file-name "/usr/local/Cellar/plantuml/8041/plantuml.8041.jar")) #+END_SRC ** Org-bullets @@ -787,6 +803,13 @@ use [[https://github.com/sabof/org-bullets][org-bullets]] package to show utf-8 ;; increase font size when enter org-src-mode ;; (add-hook 'org-src-mode-hook (lambda () (text-scale-increase 2))) + + ;; define a face for org-bullets + (defface org-bullet-face + '((t (:foreground "green yellow"))) + "Face used for the org-bullets.") + (setq org-bullets-face-name (quote org-bullet-face)) + (set-face-attribute 'org-bullet-face t :foreground "burlywood" :weight 'normal :height 1.6) #+END_SRC ** Worf Mode @@ -798,7 +821,9 @@ cause we cannot input =[= and =]=, so here I unset this mappings. And redifined (use-package worf :ensure t :commands worf-mode - :init (add-hook 'org-mode-hook 'worf-mode)) + :init + (require 'ivy) + (add-hook 'org-mode-hook 'worf-mode)) #+END_SRC ** Get Things Done @@ -1064,6 +1089,21 @@ Color higlight the source code block in exported html, [[http://stackoverflow.co ** Org structure template extend org-mode's easy templates, refer to [[http://coldnew.github.io/coldnew-emacs/#orgheadline94][Extend org-modes' esay templates]] #+BEGIN_SRC emacs-lisp :tangle yes :results silent + ;; ‘s’ ‘#+BEGIN_SRC ... #+END_SRC’ + ;; ‘e’ ‘#+BEGIN_EXAMPLE ... #+END_EXAMPLE’ + ;; ‘q’ ‘#+BEGIN_QUOTE ... #+END_QUOTE’ + ;; ‘v’ ‘#+BEGIN_VERSE ... #+END_VERSE’ + ;; ‘c’ ‘#+BEGIN_CENTER ... #+END_CENTER’ + ;; ‘l’ ‘#+BEGIN_LaTeX ... #+END_LaTeX’ + ;; ‘L’ ‘#+LaTeX:’ + ;; ‘h’ ‘#+BEGIN_HTML ... #+END_HTML’ + ;; ‘H’ ‘#+HTML:’ + ;; ‘a’ ‘#+BEGIN_ASCII ... #+END_ASCII’ + ;; ‘A’ ‘#+ASCII:’ + ;; ‘i’ ‘#+INDEX:’ line + ;; ‘I’ ‘#+INCLUDE:’ line + + (add-to-list 'org-structure-template-alist '("E" "#+BEGIN_SRC emacs-lisp :tangle yes :results silent\n?\n#+END_SRC")) (add-to-list 'org-structure-template-alist @@ -1080,11 +1120,15 @@ extend org-mode's easy templates, refer to [[http://coldnew.github.io/coldnew-em '("C" "#+BEGIN_SRC c :tangle ?\n\n#+END_SRC")) (add-to-list 'org-structure-template-alist '("m" "\\begin{equation}\n?\n\\end{equation}")) - (add-to-list 'org-structure-template-alist '("b" "#+STARTUP: showall ,#+STARTUP: inlineimages ,#+OPTIONS: toc:nil\n")) + (add-to-list 'org-structure-template-alist + '("d" "#+BEGIN_SRC ditaa :file ? :cmdline -r -s 0.8 :cache yes \n\n#+END_SRC")) + (add-to-list 'org-structure-template-alist + '("u" "#+BEGIN_SRC plantuml :file ? \n\n#+END_SRC")) + #+END_SRC ** Org theme @@ -1102,6 +1146,11 @@ extend org-mode's easy templates, refer to [[http://coldnew.github.io/coldnew-em (set-face-attribute face nil :inherit 'fixed-pitch)) (list 'org-code 'org-block 'org-block-background)) (set-face-attribute 'org-table nil :family "Ubuntu Mono" :height 140) + ;; org-special-keyword inherited from font-lock-keywork originally; as org is changed to variable-pitch, it cause + ;; the font in special-keywords are not monospace + (set-face-attribute 'org-special-keyword nil :inherit '(font-lock-keyword-face fixed-pitch)) + ;; same as above + (set-face-attribute 'org-verbatim nil :inherit '(shadow fixed-pitch)) ;; fix indent broken by variable-pitch-mode ;; http://emacs.stackexchange.com/questions/26864/variable-pitch-face-breaking-indentation-in-org-mode @@ -1579,6 +1628,23 @@ When see function by =C-h f=, and visit the source code, I would like the buffer (add-hook 'help-mode-hook 'sd/help-mode-hook) #+END_SRC +Wiki [[http://stackoverflow.com/questions/3480173/show-keys-in-emacs-keymap-value][show-keys-in-emacs-keymap-value]], Helpplus mode can show keymap as human-readable, use ~describe-keymap~ or =C-h M-k= + +#+BEGIN_SRC emacs-lisp :tangle yes :results silent + (el-get-bundle help-macro+ + :url "https://raw.githubusercontent.com/emacsmirror/emacswiki.org/master/help-macro+.el" + :features help-macro+) + (el-get-bundle help+ + :url "https://raw.githubusercontent.com/emacsmirror/emacswiki.org/master/help+.el" + :features help+) + (el-get-bundle help-fns+ + :url "https://raw.githubusercontent.com/emacsmirror/emacswiki.org/master/help-fns+.el" + :features help-fns+) + (el-get-bundle help-mode+ + :url "https://raw.githubusercontent.com/emacsmirror/emacswiki.org/master/help-mode+.el" + :features help-mode+) +#+END_SRC + ** goto-last-change #+BEGIN_SRC emacs-lisp :tangle yes :results silent (use-package goto-last-change @@ -1638,20 +1704,25 @@ as a http download client tool #+END_SRC ** Elscreen +Fix one elscreen issue when startup emacs https://github.com/knu/elscreen/issues/6 #+BEGIN_SRC emacs-lisp :tangle yes :results silent (use-package elscreen :ensure t :init (setq elscreen-tab-display-control nil) :config - (elscreen-start) + ;; (elscreen-start) (set-face-attribute 'elscreen-tab-current-screen-face nil :foreground "black" :background "yellow") (set-face-attribute 'elscreen-tab-other-screen-face nil :foreground "black" :background "disabledControlTextColor" :underline nil) ;; (global-unset-key (kbd)); M-TAB switch screen - (global-set-key (kbd "s-`") '(lambda () (interactive) (elscreen-goto 0))) - (dotimes (i 8) - (global-set-key (kbd (concat "s-" (number-to-string (+ i 1)))) - `(lambda () (interactive) (elscreen-goto ,(+ i 1)))))) + ;; (global-set-key (kbd "s-`") '(lambda () (interactive) (elscreen-goto 0))) + ;; (dotimes (i 8) + ;; (global-set-key (kbd (concat "s-" (number-to-string (+ i 1)))) + ;; `(lambda () (interactive) (elscreen-goto ,(+ i 1))))) + ;; (global-set-key (kbd "s-t") 'elscreen-create) + ;; (global-set-key (kbd "s-n") 'elscreen-next) + ;; (global-set-key (kbd "s-p") 'elscreen-previous) + ) #+END_SRC * Dired @@ -1724,11 +1795,24 @@ as a http download client tool #+END_SRC #+BEGIN_SRC emacs-lisp :tangle yes :results silent - (defun sd/dired-new-file () + (defun sd/dired-new-file-and-open () "Create a new file in dired mode" (interactive) (call-interactively 'find-file)) + (defun sd/dired-new-file (file) + "Create a new file called FILE. + If FILE already exists, signal an error." + (interactive + (list (read-file-name "Create file: " (dired-current-directory)))) + (let* ((expanded (expand-file-name file))) + (if (file-exists-p expanded) + (error "Cannot create file %s: file exists" expanded)) + (write-region "" nil expanded t) + (when expanded + (dired-add-file expanded) + (dired-move-to-filename)))) + ;; copied from abo-abo's config (defun sd/dired-get-size () (interactive) @@ -1749,7 +1833,8 @@ from [[https://emacs.stackexchange.com/questions/13713/how-to-disable-ido-in-dir (defun mk-anti-ido-advice (func &rest args) "Temporarily disable IDO and call function FUNC with arguments ARGS." (interactive) - (let ((read-file-name-function #'read-file-name-default)) + (let ((read-file-name-function #'read-file-name-default) + (completing-read-function #'completing-read-default)) (if (called-interactively-p 'any) (call-interactively func) (apply func args)))) @@ -1757,14 +1842,29 @@ from [[https://emacs.stackexchange.com/questions/13713/how-to-disable-ido-in-dir (defun mk-disable-ido (command) "Disable IDO when command COMMAND is called." (advice-add command :around #'mk-anti-ido-advice)) + + (defun mk-anti-ido-no-completing-advice (func &rest args) + "Temporarily disable IDO and call function FUNC with arguments ARGS." + (interactive) + (let ((read-file-name-function #'read-file-name-default) + ;; (completing-read-function #'completing-read-default) + ) + (if (called-interactively-p 'any) + (call-interactively func) + (apply func args)))) + + (defun mk-disable-ido-no-completing (command) + "Disable IDO when command COMMAND is called." + (advice-add command :around #'mk-anti-ido-no-completing-advice)) #+END_SRC Disalble =ido= when new a directory or file in =dired= mode #+BEGIN_SRC emacs-lisp :tangle yes :results silent ;; call the function which you want to disable ido (mk-disable-ido 'dired-create-directory) + (mk-disable-ido 'sd/dired-new-file-and-open) (mk-disable-ido 'sd/dired-new-file) - (mk-disable-ido 'dired-goto-file) + (mk-disable-ido-no-completing 'dired-goto-file) #+END_SRC ** Dired open with @@ -1861,6 +1961,7 @@ here on Mac, just use "open" commands to pen =.pdf=, =.html= and image files :config (define-key company-active-map (kbd "M-n") nil) (define-key company-active-map (kbd "M-p") nil) + (define-key company-active-map (kbd "SPC") #'sd/company-stop-input-space) (define-key company-active-map (kbd "C-n") #'company-select-next) (define-key company-active-map (kbd "C-p") #'company-select-previous) ;; should map both (kbd "TAB") and [tab],https://github.com/company-mode/company-mode/issues/75 @@ -1868,12 +1969,18 @@ here on Mac, just use "open" commands to pen =.pdf=, =.html= and image files (define-key company-active-map [tab] #'company-complete-selection) (global-company-mode) ;; magig-commit is text-modeh - (setq company-global-modes '(not org-mode magit-status-mode text-mode eshell-mode))) + (setq company-global-modes '(not org-mode magit-status-mode text-mode eshell-mode gfm-mode markdown-mode))) (use-package company-statistics :ensure t :config (company-statistics-mode)) + + (defun sd/company-stop-input-space () + "Stop completing and input a space,a workaround of a semantic issue `https://github.com/company-mode/company-mode/issues/614'" + (interactive) + (company-abort) + (insert " ")) #+END_SRC ** YASnippet @@ -2011,11 +2118,15 @@ bindings in =lispy-mode-map= after loaded. see [[http://stackoverflow.com/questi (use-package lispy :ensure t :init - (eval-after-load "lispy" - `(progn - (define-key lispy-mode-map (kbd "M-o") nil))) + (with-eval-after-load "lispy" + (define-key lispy-mode-map (kbd "M-o") nil) + (define-key lispy-mode-map (kbd "g") 'special-lispy-goto-local) + (define-key lispy-mode-map (kbd "G") 'special-lispy-goto) + (define-key lispy-mode-map (kbd "M-m") 'back-to-indentation)) :config (add-hook 'emacs-lisp-mode-hook (lambda () (lispy-mode 1)))) + + #+END_SRC ** Perl @@ -2801,8 +2912,9 @@ Use =ESC= to exit minibuffer. Also I map =Super-h= the same as =C-g= :config (persp-mode) :bind - (:map projectile-mode-map - ("s-t" . projectile-persp-switch-project))) + ;; (:map projectile-mode-map + ;; ("s-t" . projectile-persp-switch-project)) + ) ;; change default-directory of scratch buffer to projectile-project-root (defun sd/project-switch-action () @@ -2829,71 +2941,16 @@ Use =ESC= to exit minibuffer. Also I map =Super-h= the same as =C-g= (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-`") '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-;") 'persp-switch-last) + ;; (global-set-key (kbd "s-n") 'persp-next) + ;; (global-set-key (kbd "s-p") 'persp-prev) + ;; (global-set-key (kbd "s-;") 'persp-switch-last) (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= @@ -2917,7 +2974,7 @@ Most use =C-o C-o= to switch buffers; =C-o x, v= to split window; =C-o o= to del (delete-other-windows))) (defhydra sd/hydra-window (:color red :columns nil) - "Window" + "C-o" ;; windows switch ("h" windmove-left nil :exit t) ("j" windmove-down nil :exit t) @@ -2934,36 +2991,38 @@ Most use =C-o C-o= to switch buffers; =C-o x, v= to split window; =C-o o= to del (interactive) (split-window-right) (windmove-right)) - "vert" :exit t) + nil :exit t) ("x" (lambda () (interactive) (split-window-below) (windmove-down)) - "horz" :exit t) + nil :exit t) ;; buffer / windows switch - ("o" sd/toggle-max-windows "one" :exit t) - ("C-k" sd/delete-current-window "del" :exit t) + ("o" sd/toggle-max-windows nil :exit t) + ("C-k" sd/delete-current-window nil :exit t) ("C-d" (lambda () (interactive) (kill-buffer) (sd/delete-current-window)) - "kill" :exit t) + nil :exit t) ;; ace-window ;; ("'" other-window "other" :exit t) ;; ("a" ace-window "ace") - ("s" ace-swap-window "swap") - ("D" ace-delete-window "ace-one" :exit t) + ("s" ace-swap-window nil) + ("D" ace-delete-window nil :exit t) ;; ("i" ace-maximize-window "ace-one" :exit t) ;; Windows undo - redo - ("u" (progn (winner-undo) (setq this-command 'winner-undo)) "undo") - ("r" (progn (winner-redo) (setq this-command 'winner-redo)) "redo") + ("u" (progn (winner-undo) (setq this-command 'winner-undo)) nil) + ("r" (progn (winner-redo) (setq this-command 'winner-redo)) nil) ;; ibuffer, dired, eshell, bookmarks ;; ("C-i" other-window nil :exit t) ("C-b" ido-switch-buffer nil :exit t) ("C-f" projectile-find-file nil :exit t) - ("C-p" persp-switch :exit t) + ("C-r" ivy-recentf nil :exit t) + ("C-p" persp-switch nil :exit t) + ("C-t" projectile-persp-switch-project nil :exit t) ;; other special buffers ("d" sd/project-or-dired-jump nil :exit t) @@ -2976,17 +3035,17 @@ Most use =C-o C-o= to switch buffers; =C-o x, v= to split window; =C-o o= to del ;; ("p" paradox-list-packages nil :exit t) ;; quit - ("q" nil "cancel") - ("" nil) + ("q" nil nil) + ("" nil nil) ("C-h" windmove-left nil :exit t) ("C-j" windmove-down nil :exit t) - ("C-k" windmove-up :exit t) + ("C-k" windmove-up nil :exit t) ("C-l" windmove-right nil :exit t) ("C-;" nil nil :exit t) ("n" nil nil :exit t) ("[" nil nil :exit t) ("]" nil nil :exit t) - ("f" nil)) + ("f" nil nil)) (global-unset-key (kbd "C-o")) (global-set-key (kbd "C-o") 'sd/hydra-window/body) @@ -3431,7 +3490,25 @@ Refer [[https://github.com/fnwiya/dotfiles/blob/c9ca79f1b22c919d9f4c3a0f944ba828 (global-set-key (kbd "C-w") 'sd/kill-region-or-backward-kill-word) #+END_SRC +* Developing +** perspeen +#+BEGIN_SRC emacs-lisp :tangle yes :results silent + (el-get-bundle seudut/perspeen + :features perspeen + (setq perspeen-use-tab t) + (perspeen-mode)) + ;; super-i to switch to ith workspace + + (defmacro sd/define-keys (map key func &rest args) + "A macro to define multi keys " + `(define-key ,map ,key (lambda () (interactive) (,func ,@args)))) + + (with-eval-after-load "perspeen" + (dotimes (ii 9) + (sd/define-keys perspeen-mode-map (kbd (concat "s-" (number-to-string (+ ii 1)))) + perspeen-goto-ws (+ ii 1)))) +#+END_SRC * TODO todolist ** Rucket ** player video on iphone for @@ -3442,3 +3519,16 @@ search music on some music web site ** Need separate the Key-bindings and package-initialization +* Note +** Check if emacs is in terminal of graphic mode +Use =display-graphic-p= instead of =window-system= +[[info:elisp#Window%20Systems][Window Systems]] +** =Interactive= +** List operation +*** add a element to list +- ~add-to-list~ functions, append +- ~push~ macro +- ~(setcdr (last aa) (list element))~ +blog with modify list + +draw one line top of the windows