X-Git-Url: http://47.100.26.94:8080/?a=blobdiff_plain;f=emacs.d%2Fconfig.org;h=106773d24450f5ccf8bc2e01594c7cdc99bb10fa;hb=426aa3f4af4c35eef6871e75276539311b7e6008;hp=126f90c684b38489dff3307bdd0d5be63b4309bb;hpb=98f94ddef05fa07db4e8e118def29c324f8d2dec;p=dotfiles.git diff --git a/emacs.d/config.org b/emacs.d/config.org index 126f90c..106773d 100644 --- a/emacs.d/config.org +++ b/emacs.d/config.org @@ -515,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)) @@ -574,15 +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" - (if window-system - (progn - (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 @@ -673,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 @@ -756,7 +737,7 @@ Always indents header, and hide header leading starts so that no need type =#+ST (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)) + (warn "seudut: ditaa.jar not found at %s " org-ditaa-jar-path)) (org-babel-do-load-languages 'org-babel-load-languages '((python . t) @@ -840,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 @@ -1645,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 @@ -1706,22 +1706,23 @@ as a http download client tool ** 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) - (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-t") 'elscreen-create) - (global-set-key (kbd "s-n") 'elscreen-next) - (global-set-key (kbd "s-p") 'elscreen-previous)) + ;; (use-package elscreen + ;; :ensure t + ;; :init + ;; (setq elscreen-tab-display-control nil) + ;; :config + ;; ;; (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-t") 'elscreen-create) + ;; ;; (global-set-key (kbd "s-n") 'elscreen-next) + ;; ;; (global-set-key (kbd "s-p") 'elscreen-previous) + ;; ) #+END_SRC * Dired @@ -1960,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 @@ -1967,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 @@ -2110,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 @@ -2542,6 +2554,13 @@ Emacs lisp auto-insert, based on the default module in =autoinsert.el=, but repl ("\\.md\\'" . markdown-mode) ("\\.markdown\\'" . markdown-mode)) :init (setq markdown-command "multimarkdown")) + + (add-hook 'gfm-mode-hook (lambda () + (set-face-attribute 'markdown-inline-code-face nil :inherit 'fixed-pitch) + (set-face-attribute 'markdown-pre-face nil :inherit 'fixed-pitch))) + (with-eval-after-load "gfm-mode" + (set-face-attribute 'markdown-inline-code-face nil :inherit 'fixed-pitch) + (set-face-attribute 'markdown-pre-face nil :inherit 'fixed-pitch)) #+END_SRC #+BEGIN_SRC emacs-lisp :tangle yes :results silent @@ -2732,66 +2751,68 @@ Then, run =mu index --maildir=~/.Mail= ** Mu4e - Emacs frontend of Mu config from [[http://www.kirang.in/2014/11/13/emacs-as-email-client-with-offlineimap-and-mu4e-on-osx/][emacs-as-email-client-with-offlineimap-and-mu4e-on-osx]] #+BEGIN_SRC emacs-lisp :tangle yes :results silent - (require 'mu4e) - (setq mu4e-maildir "~/.Mail") - (setq mu4e-drafts-folder "/[Gmail].Drafts") - (setq mu4e-sent-folder "/[Gmail].Sent Mail") - ;; don't save message to Sent Messages, Gmail/IMAP takes care of this - (setq mu4e-sent-messages-behavior 'delete) - ;; allow for updating mail using 'U' in the main view: - (setq mu4e-get-mail-command "offlineimap") - - ;; shortcuts - (setq mu4e-maildir-shortcuts - '( ("/INBOX" . ?i) - ("/[Gmail].Sent Mail" . ?s))) - - ;; something about ourselves - (setq - user-mail-address "seudut@gmail.com" - user-full-name "Peng Li" - mu4e-compose-signature - (concat - "Thanks,\n" - "Peng\n")) - - ;; show images - (setq mu4e-show-images t) - - ;; use imagemagick, if available - (when (fboundp 'imagemagick-register-types) - (imagemagick-register-types)) - - ;; convert html emails properly - ;; Possible options: - ;; - html2text -utf8 -width 72 - ;; - textutil -stdin -format html -convert txt -stdout - ;; - html2markdown | grep -v ' _place_holder;' (Requires html2text pypi) - ;; - w3m -dump -cols 80 -T text/html - ;; - view in browser (provided below) - (setq mu4e-html2text-command "textutil -stdin -format html -convert txt -stdout") - - ;; spell check - (add-hook 'mu4e-compose-mode-hook - (defun my-do-compose-stuff () - "My settings for message composition." - (set-fill-column 72) - (flyspell-mode))) - - ;; add option to view html message in a browser - ;; `aV` in view to activate - (add-to-list 'mu4e-view-actions - '("ViewInBrowser" . mu4e-action-view-in-browser) t) - - ;; fetch mail every 10 mins - (setq mu4e-update-interval 600) - - ;; mu4e view - (setq-default mu4e-headers-fields '((:flags . 6) - (:from-or-to . 22) - (:mailing-list . 20) - (:thread-subject . 70) - (:human-date . 16))) + (if (require 'mu4e nil 'noerror) + (progn + (setq mu4e-maildir "~/.Mail") + (setq mu4e-drafts-folder "/[Gmail].Drafts") + (setq mu4e-sent-folder "/[Gmail].Sent Mail") + ;; don't save message to Sent Messages, Gmail/IMAP takes care of this + (setq mu4e-sent-messages-behavior 'delete) + ;; allow for updating mail using 'U' in the main view: + (setq mu4e-get-mail-command "offlineimap") + + ;; shortcuts + (setq mu4e-maildir-shortcuts + '( ("/INBOX" . ?i) + ("/[Gmail].Sent Mail" . ?s))) + + ;; something about ourselves + (setq + user-mail-address "seudut@gmail.com" + user-full-name "Peng Li" + mu4e-compose-signature + (concat + "Thanks,\n" + "Peng\n")) + + ;; show images + (setq mu4e-show-images t) + + ;; use imagemagick, if available + (when (fboundp 'imagemagick-register-types) + (imagemagick-register-types)) + + ;; convert html emails properly + ;; Possible options: + ;; - html2text -utf8 -width 72 + ;; - textutil -stdin -format html -convert txt -stdout + ;; - html2markdown | grep -v ' _place_holder;' (Requires html2text pypi) + ;; - w3m -dump -cols 80 -T text/html + ;; - view in browser (provided below) + (setq mu4e-html2text-command "textutil -stdin -format html -convert txt -stdout") + + ;; spell check + (add-hook 'mu4e-compose-mode-hook + (defun my-do-compose-stuff () + "My settings for message composition." + (set-fill-column 72) + (flyspell-mode))) + + ;; add option to view html message in a browser + ;; `aV` in view to activate + (add-to-list 'mu4e-view-actions + '("ViewInBrowser" . mu4e-action-view-in-browser) t) + + ;; fetch mail every 10 mins + (setq mu4e-update-interval 600) + + ;; mu4e view + (setq-default mu4e-headers-fields '((:flags . 6) + (:from-or-to . 22) + (:mailing-list . 20) + (:thread-subject . 70) + (:human-date . 16)))) + (warn "seudut:mu4e not installed, it won't work.")) #+END_SRC ** Smtp - send mail @@ -2895,14 +2916,14 @@ Use =ESC= to exit minibuffer. Also I map =Super-h= the same as =C-g= (add-to-list 'projectile-globally-ignored-files "GTAGS") (projectile-global-mode t)) - (use-package persp-projectile - :ensure t - :config - (persp-mode) - :bind - ;; (:map projectile-mode-map - ;; ("s-t" . projectile-persp-switch-project)) - ) + ;; (use-package persp-projectile + ;; :ensure t + ;; :config + ;; (persp-mode) + ;; :bind + ;; ;; (: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 () @@ -2962,7 +2983,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) @@ -2979,37 +3000,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-t" projectile-persp-switch-project nil :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) @@ -3022,17 +3044,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) @@ -3477,7 +3499,32 @@ 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))) + (define-key perspeen-mode-map (kbd "s-c") 'perspeen-create-ws) + (define-key perspeen-mode-map (kbd "s-n") 'perspeen-next-ws) + (define-key perspeen-mode-map (kbd "s-p") 'perspeen-previous-ws) + (define-key perspeen-mode-map (kbd "s-'") 'perspeen-last-ws) + (define-key perspeen-mode-map (kbd "s-t") 'perspeen-tab-create-tab) + (define-key perspeen-mode-map (kbd "s-t") 'perspeen-tab-create-tab)) +#+END_SRC * TODO todolist ** Rucket ** player video on iphone for @@ -3493,3 +3540,11 @@ search music on some music web site 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