X-Git-Url: http://47.100.26.94:8080/?a=blobdiff_plain;f=emacs.d%2Fconfig.org;h=d9b1b60e118824ad30605574810176c41895b44a;hb=85079e8b2c42d479c03a392dbe493e77a220b4ca;hp=0d3d27a1b654ce9acec884594a9616ff87fc32a4;hpb=daada229df8bea625cce9f87049d39d82b801ab6;p=dotfiles.git diff --git a/emacs.d/config.org b/emacs.d/config.org index 0d3d27a..d9b1b60 100644 --- a/emacs.d/config.org +++ b/emacs.d/config.org @@ -640,16 +640,17 @@ Use =ESC= to exit minibuffer. Also I map =Super-h= the same as =C-g= 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) ;; s-k --> kill-this-buffer - (global-set-key (kbd "s-l") (lambda () - (interactive) - (if (> (length (window-list)) 1) - (delete-window) - (message "Only one Windows now!")))) + (global-set-key (kbd "s-l") 'sd/delete-current-window) ;; s-l --> goto-line (global-set-key (kbd "s-;") 'swiper) ;; s-; --> @@ -666,6 +667,8 @@ Some global bindings on =Super=, on Mac, it is =Command= (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) ;; someothers default mapping on super (command) key @@ -724,31 +727,59 @@ Some global bindings on =Super=, on Mac, it is =Command= #+END_SRC ** =M-s= bindings for searching - -I use the prefix =M-s= for searching in buffers + use the prefix =M-s= for searching in buffers #+BEGIN_SRC emacs-lisp :tangle yes :results silent - - (defun pl-make-keymap (key bindings) + (defun sd/make-keymap (key bindings) (setq keymap (make-sparse-keymap)) (dolist (binding bindings) (define-key keymap (car binding) (cdr binding))) (global-set-key key keymap)) - (define-key minibuffer-local-map "\M-s" nil) + (sd/make-keymap "\M-s" + '(("w" . save-buffer) + ("\M-w" . save-buffer) + ("e" . revert-buffer) + ("s" . isearch-forward-regexp) + ("r" . isearch-backward-regexp) + ("o" . occur))) + + ;; (define-key isearch-mode-map (kbd "s") 'isearch-repeat-forward) + ;; (define-key isearch-mode-map (kbd "r") 'isearch-repeat-forward) + (define-key isearch-mode-map (kbd "M-s") 'isearch-repeat-forward) + (define-key isearch-mode-map (kbd "M-r") 'isearch-repeat-backward) - (global-set-key (kbd "M-s s") 'isearch-forward-regexp) - (define-key isearch-mode-map "\M-s" 'isearch-repeat-forward) - (global-set-key (kbd "M-s r") 'isearch-backward-regexp) - (define-key isearch-mode-map "\M-r" 'isearch-repeat-backward) + ;; auto select occur window + (add-hook 'occur-hook (lambda () (switch-to-buffer-other-window "*Occur*"))) - (global-set-key (kbd "s-/") 'isearch-forward-regexp) - (define-key isearch-mode-map (kbd "s-/") 'isearch-repeat-forward) - (define-key isearch-mode-map (kbd "C-n") 'isearch-repeat-forward) + ;; increase font size when enter org-src-mode + (add-hook 'org-src-mode-hook (lambda () (text-scale-increase 2))) + (define-key minibuffer-local-map "\M-s" nil) + (set-face-background 'ido-first-match "white") + (defhydra sd/search-buffer (:color red :columns nil) + "M-s" + ("w" save-buffer "save" :exit) + ("s" isearch-forward-regrexp "search-forward" :exit) + ("r" isearch-backward-regrexp "search-backward" :exit) + ("s" save-buffer "save" :exit) + ("s" save-buffer "save" :exit) + ("s" save-buffer "save" :exit) + ("s" save-buffer "save" :exit) + ("s" save-buffer "save" :exit) + ("s" save-buffer "save" :exit) + ("s" save-buffer "save" :exit) + ("s" save-buffer "save" :exit) + ("q" nil "quil") + ("f" nil)) + + + ;; (global-unset-key (kbd "M-s")) + ;; (global-set-key (kbd "M-s") 'sd/search-buffer) + ;; M-s o --> occur ;; M-s s --> isearch-forward-regexp ;; M-s r --> isearch-backward-regexp @@ -1188,9 +1219,9 @@ and Defined keys, using vi keybindings, Refer abo-abo's setting [[https://github * Eshell *** Eshell alias #+BEGIN_SRC emacs-lisp :tangle yes :results silent - (defalias 'e 'ido-find-file) - (defalias 'ff 'ido-find-file) - (defalias 'ee 'ido-find-file-other-window) + (defalias 'e 'find-file) + (defalias 'ff 'find-file) + (defalias 'ee 'find-files) #+END_SRC *** Eshell erase buffer @@ -1310,7 +1341,6 @@ Refer [[https://github.com/abo-abo/hydra/blob/master/hydra-examples.el][hydra-ex #+END_SRC *** hydra-window - #+BEGIN_SRC emacs-lisp :tangle yes :results silent (winner-mode 1) @@ -1335,11 +1365,14 @@ Refer [[https://github.com/abo-abo/hydra/blob/master/hydra-examples.el][hydra-ex (windmove-down)) "horz" :exit t) ("o" delete-other-windows "one" :exit t) + ("C-o" ido-switch-buffer "buf" :exit t) + ("C-k" sd/delete-current-window "del" :exit t) ("a" ace-window "ace") ("s" ace-swap-window "swap") ("d" ace-delete-window "ace-one" :exit t) ("i" ace-maximize-window "ace-one" :exit t) - ("b" ido-switch-buffer "buf") + ("b" ido-switch-buffer "buf" :exit t) + ("C-b" ido-switch-buffer "buf" :exit t) ;; ("m" headlong-bookmark-jump "bmk") ("q" nil "cancel") ("u" (progn (winner-undo) (setq this-command 'winner-undo)) "undo") @@ -1348,13 +1381,30 @@ Refer [[https://github.com/abo-abo/hydra/blob/master/hydra-examples.el][hydra-ex (global-unset-key (kbd "C-o")) (global-set-key (kbd "C-o") 'sd/hydra-window/body) +#+END_SRC - (defun triggle-windows-max-size () - (interactive) - (if (> (length (window-list)) 1) - (delete-other-windows) - (winner-undo))) +*** hydra misc +#+BEGIN_SRC emacs-lisp :tangle yes :results silent + (defhydra sd/hydra-misc () + "Miscellaneous Commands" + ("e" eshell "eshell" :color red :exit t) + ("p" (lambda () + (interactive) + (if (sd/buffer-exist "*Packages*") + (switch-to-buffer "*Packages*") + (package-list-packages))) + "list-package" :color red :exit t) + ("g" magit-status "git-status" :color red :exit t)) +#+END_SRC +*** hydra launcher +#+BEGIN_SRC emacs-lisp :tangle yes :results silent + (defhydra hydra-launcher (:color blue :columns 2) + "Launch" + ("h" man "man") + ("s" eshell "eshell") + ("p" package-list-packages "Package") + ("q" nil "cancel")) #+END_SRC ** Line Number @@ -1555,14 +1605,15 @@ Play Go in Emacs, gnugo xpm refert [[https://github.com/okanotor/dotemacs/blob/f #+END_SRC ** undo-tree - #+BEGIN_SRC emacs-lisp :tangle yes :results silent - (use-package undo-tree :ensure t :config + (define-key undo-tree-visualizer-mode-map "j" 'undo-tree-visualize-redo) + (define-key undo-tree-visualizer-mode-map "k" 'undo-tree-visualize-undo) + (define-key undo-tree-visualizer-mode-map "h" 'undo-tree-visualize-switch-branch-left) + (define-key undo-tree-visualizer-mode-map "l" 'undo-tree-visualize-switch-branch-right) (global-undo-tree-mode 1)) - #+END_SRC ** swiper @@ -1657,16 +1708,14 @@ In Lisp Mode, =M-o= is defined, but I use this for global hydra window. So here bindings in =lispy-mode-map= after loaded. see [[http://stackoverflow.com/questions/298048/how-to-handle-conflicting-keybindings][here]] #+BEGIN_SRC emacs-lisp :tangle yes :results silent - (use-package lispy :ensure t :init - (eval-after-load 'lispy - '(progn + (eval-after-load "lispy" + `(progn (define-key lispy-mode-map (kbd "M-o") nil))) :config (add-hook 'emacs-lisp-mode-hook (lambda () (lispy-mode 1)))) - #+END_SRC *** Perl @@ -1861,3 +1910,139 @@ company mode :ensure t) #+END_SRC +* Gnus +** Gmail setting +Refer [[https://www.emacswiki.org/emacs/GnusGmail][GnusGmail]] +#+BEGIN_SRC emacs-lisp :tangle yes :results silent + (setq user-mail-address "seudut@gmail.com" + user-full-name "Peng Li") + + (setq gnus-select-method + '(nnimap "gmail" + (nnimap-address "imap.gmail.com") + (nnimap-server-port "imaps") + (nnimap-stream ssl))) + + (setq smtpmail-smtp-service 587 + gnus-ignored-newsgroups "^to\\.\\|^[0-9. ]+\\( \\|$\\)\\|^[\"]\"[#'()]") + + ;; Use gmail sending mail + (setq message-send-mail-function 'smtpmail-send-it + smtpmail-starttls-credentials '(("smtp.gmail.com" 587 nil nil)) + smtpmail-auth-credentials '(("smtp.gmail.com" 587 "seudut@gmail.com" nil)) + smtpmail-default-smtp-server "smtp.gmail.com" + smtpmail-smtp-server "smtp.gmail.com" + smtpmail-smtp-service 587 + starttls-use-gnutls t) +#+END_SRC + +And put the following in =~/.authinfo= file, replacing == with your email address +and == with the password +#+BEGIN_EXAMPLE + machine imap.gmail.com login password port imaps + machine smtp.gmail.com login password port 587 +#+END_EXAMPLE + +Then Run =M-x gnus= + +** Group buffer +#+BEGIN_SRC emacs-lisp :tangle yes :results silent + (use-package gnus + :init + (setq gnus-permanently-visible-groups "\.*") + :config + (cond (window-system + (setq custom-background-mode 'light) + (defface my-group-face-1 + '((t (:foreground "Red" :bold t))) "First group face") + (defface my-group-face-2 + '((t (:foreground "DarkSeaGreen4" :bold t))) + "Second group face") + (defface my-group-face-3 + '((t (:foreground "Green4" :bold t))) "Third group face") + (defface my-group-face-4 + '((t (:foreground "SteelBlue" :bold t))) "Fourth group face") + (defface my-group-face-5 + '((t (:foreground "Blue" :bold t))) "Fifth group face"))) + (setq gnus-group-highlight + '(((> unread 200) . my-group-face-1) + ((and (< level 3) (zerop unread)) . my-group-face-2) + ((< level 3) . my-group-face-3) + ((zerop unread) . my-group-face-4) + (t . my-group-face-5)))) + + + ;; key- + (add-hook 'gnus-group-mode-hook (lambda () + (define-key gnus-group-mode-map "k" 'gnus-group-prev-group) + (define-key gnus-group-mode-map "j" 'gnus-group-next-group) + (define-key gnus-group-mode-map "g" 'gnus-group-jump-to-group) + (define-key gnus-group-mode-map "v" (lambda () (interactive) (gnus-group-select-group t))))) +#+END_SRC + +#+BEGIN_SRC emacs-lisp :tangle yes :results silent + (setq gnus-fetch-old-headers 't) + + + + (setq gnus-extract-address-components + 'mail-extract-address-components) + ;; summary buffer + (setq gnus-summary-line-format "%U%R%z%I%(%[%-20,20f%]%) %s%-80= %11&user-date;\n") + (setq gnus-user-date-format-alist '(((gnus-seconds-today) . "%H:%M") + ((+ 86400 (gnus-seconds-today)) . "%a %H:%M") + (604800 . "%a, %b %-d") + (15778476 . "%b %-d") + (t . "%Y-%m-%d"))) + + (setq gnus-thread-sort-functions '((not gnus-thread-sort-by-number))) + (setq gnus-unread-mark ?\.) + (setq gnus-use-correct-string-widths t) + + ;; thread + (setq gnus-thread-hide-subtree t) + + ;; (with-eval-after-load 'gnus-summary-mode + ;; (define-key gnus-summary-mode-map (kbd "C-o") 'sd/hydra-window/body)) + + (add-hook 'gnus-summary-mode-hook (lambda () + (define-key gnus-summary-mode-map (kbd "C-o") nil))) + + +#+END_SRC + +** Windows layout +See [[https://www.emacswiki.org/emacs/GnusWindowLayout][GnusWindowLayout]] +#+BEGIN_SRC emacs-lisp :tangle yes :results silent + (gnus-add-configuration + '(summary + (horizontal 1.0 + (vertical 35 + (group 1.0)) + (vertical 1.0 + (summary 1.0 poine))))) + + (gnus-add-configuration + '(article + (horizontal 1.0 + (vertical 35 + (group 1.0)) + (vertical 1.0 + (summary 0.50 point) + (article 1.0))))) + + (with-eval-after-load 'gnus-group-mode + (gnus-group-select-group "INBOX")) + ;; (add-hook 'gnus-group-mode-map (lambda () + ;; (gnus-group-select-group "INBOX"))) +#+END_SRC + +* key +- passion +- vision +- mission + + + + +