X-Git-Url: http://47.100.26.94:8080/?a=blobdiff_plain;f=emacs.d%2Fconfig.org;h=5d8f12dbb18cfab771728fc406b97fa8a5e46c8a;hb=7633c9af30a55827c66c99998cf865af1b1610f3;hp=79271430f176f9b93cb55fb78b326dd7934959e4;hpb=be51d322886cb2c8e0948c54452ced636c8f6988;p=dotfiles.git diff --git a/emacs.d/config.org b/emacs.d/config.org index 7927143..5d8f12d 100644 --- a/emacs.d/config.org +++ b/emacs.d/config.org @@ -25,9 +25,7 @@ Set system PATH and emacs exec path Set the emacs load path #+BEGIN_SRC emacs-lisp :tangle yes :results silent - - (add-to-list 'load-path "~/.emacs.d/elisp") - + ;; (add-to-list 'load-path "~/.emacs.d/elisp") #+END_SRC ** Package Initialization @@ -53,7 +51,7 @@ Disable scroll bar, tool-bar and menu-bar (tool-bar-mode 0) (menu-bar-mode 1) - (setq debug-on-error t) + ;; (setq debug-on-error t) (setq inhibit-startup-message t) (defalias 'yes-or-no-p 'y-or-n-p) @@ -93,6 +91,14 @@ Set default window size (height . 50))) #+END_SRC +Stop auto save +#+BEGIN_SRC emacs-lisp :tangle yes :results silent + (setq auto-save-default nil) + + ;; restore last session + ;; (desktop-save-mode t) +#+END_SRC + * Package Management Tools ** Use-package @@ -350,6 +356,8 @@ clean mode line, Refer to [[https://www.masteringemacs.org/article/hiding-replac (auto-revert-mode . "") ;; default is Ind (org-indent-mode . "") + ;; default is Fly + (flyspell-mode . "") ;; Major modes (lisp-interaction-mode . "λ") (hi-lock-mode . "") @@ -398,13 +406,33 @@ Install powerline mode [[https://github.com/milkypostman/powerline][powerline]] #+END_SRC Revised powerline-center-theme - #+BEGIN_SRC emacs-lisp :tangle yes :results silent (defun sd/powerline-simpler-vc (s) (if s (replace-regexp-in-string "Git[:-]" "" s) s)) + (defface sd/powerline-active1 '((t (:background "yellow" :foreground "black" :inherit mode-line))) + "My Powerline face 1 based on powerline-active1." + :group 'powerline) + + (defface sd/buffer-modified-active1 '((t (:background "red" :foreground "black" :inherit mode-line))) + "My Powerline face 1 based on powerline-active1." + :group 'powerline) + + (defface sd/mode-line-buffer-id + '((t (:background "yellow" :foreground "black" :inherit mode-line-buffer-id))) + "My powerline mode-line face, based on mode-line-buffer-id" + :group 'powerline) + + ;; Don't show buffer modified for scratch and eshell mode + (defun sd/buffer-show-modified () + "Dot not show modified indicator for buffers" + (interactive) + (unless (or (string-match "*scratch*" (buffer-name)) + (equal major-mode 'eshell-mode)) + t)) + (defun sd/powerline-center-theme_revised () "Setup a mode-line with major and minor modes centered." (interactive) @@ -412,8 +440,12 @@ Revised powerline-center-theme '("%e" (:eval (let* ((active (powerline-selected-window-active)) - (mode-line-buffer-id (if active '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 (if active 'mode-line 'mode-line-inactive)) + (my-face1 (if active 'sd/powerline-active1 'powerline-inactive1)) + (my-face-buffer-modified (if (and (sd/buffer-show-modified) (buffer-modified-p)) + 'sd/buffer-modified-active1 + my-face1)) (face1 (if active 'powerline-active1 'powerline-inactive1)) (face2 (if active 'powerline-active2 'powerline-inactive2)) (separator-left (intern (format "powerline-%s-%s" @@ -422,23 +454,24 @@ Revised powerline-center-theme (separator-right (intern (format "powerline-%s-%s" (powerline-current-separator) (cdr powerline-default-separator-dir)))) - (lhs (list (powerline-raw "%*" mode-line 'l) + (lhs (list (powerline-raw "%* " my-face-buffer-modified 'l) ;; (powerline-buffer-size mode-line 'l) (powerline-buffer-id mode-line-buffer-id 'l) - (powerline-raw " ") - (funcall separator-left mode-line face1) + (powerline-raw " " my-face1) + (funcall separator-left my-face1 face1) (powerline-narrow face1 'l) ;; (powerline-vc face1) - (sd/powerline-simpler-vc (powerline-vc face1)) - )) + (sd/powerline-simpler-vc (powerline-vc face1)))) (rhs (list (powerline-raw global-mode-string face1 'r) (powerline-raw "%4l" face1 'r) - (powerline-raw ":" face1) + (powerline-raw ":" face1) (powerline-raw "%3c" face1 'r) - (funcall separator-right face1 mode-line) - (powerline-raw " ") - (powerline-raw "%6p" mode-line 'r) - (powerline-hud face2 face1))) + (funcall separator-right face1 my-face1) + ;; (powerline-raw " " my-face1) + (powerline-raw (format-time-string " %I:%M %p %m-%d %a ") my-face1 'r) + ;; (powerline-raw "%6p" my-face1 'r) + ;; (powerline-hud my-face1 face1 ) + )) (center (list (powerline-raw " " face1) (funcall separator-left face1 face2) (when (and (boundp 'erc-track-minor-mode) erc-track-minor-mode) @@ -459,21 +492,17 @@ Revised powerline-center-theme #+END_SRC Fix the issue in mode line when showing triangle - #+BEGIN_SRC emacs-lisp :tangle yes :results silent (setq ns-use-srgb-colorspace nil) #+END_SRC set height in mode line - #+BEGIN_SRC emacs-lisp :tangle yes :results silent - (custom-set-variables '(powerline-height 14) - '(powerline-text-scale-factor 0.8)) - ;; 100/140 + '(powerline-text-scale-factor (/ (float 100) 140))) + ;; 100/140;0.8 (set-face-attribute 'mode-line nil :height 100) - #+END_SRC * IDO & SMEX @@ -510,16 +539,13 @@ set height in mode line #+END_SRC ** IDO-vertically - #+BEGIN_SRC emacs-lisp :tangle yes :results silent - (use-package ido-vertical-mode :ensure t :init (setq ido-vertical-define-keys 'C-n-C-p-up-and-down) :config (ido-vertical-mode 1)) - #+END_SRC ** SMEX @@ -552,17 +578,18 @@ Use [[https://github.com/DarwinAwardWinner/ido-ubiquitous][ido-ubiquitous]] for #+END_SRC ** Ido-exit-target - [[https://github.com/waymondo/ido-exit-target][ido-exit-target]] let you open file/buffer on =other-windows= when call =ido-switch-buffer= - #+BEGIN_SRC emacs-lisp :tangle yes :results silent - (use-package ido-exit-target :ensure t :init - (define-key ido-common-completion-map (kbd "C-j") #'ido-exit-target-split-window-right) - (define-key ido-common-completion-map (kbd "C-l") #'ido-exit-target-split-window-below)) - + (mapcar (lambda (map) + (define-key map (kbd "C-j") #'ido-exit-target-split-window-right) + (define-key map (kbd "C-k") #'ido-exit-target-split-window-below)) + (list ido-buffer-completion-map + ;; ido-common-completion-map + ido-file-completion-map + ido-file-dir-completion-map))) #+END_SRC * Normal Text Operation @@ -594,10 +621,16 @@ Stolen from [[https://github.com/redguardtoo/emacs.d/blob/master/lisp/init-spell ;; ;; Turn off RUN-TOGETHER option when spell check text-mode ;; (setq-local ispell-extra-args (flyspell-detect-ispell-args))) ;; (add-hook 'text-mode-hook 'text-mode-hook-setup) - (add-hook 'text-mode-hook 'flyspell-mode) + ;; (add-hook 'text-mode-hook 'flyspell-mode) ;; enable flyspell check on comments and strings in progmamming modes - (add-hook 'prog-mode-hook 'flyspell-prog-mode) + ;; (add-hook 'prog-mode-hook 'flyspell-prog-mode) + + ;; I don't use the default mappings + (with-eval-after-load 'flyspell + (define-key flyspell-mode-map (kbd "C-;") nil) + (define-key flyspell-mode-map (kbd "C-,") nil) + (define-key flyspell-mode-map (kbd "C-.") nil)) #+END_SRC Make flyspell enabled for org-mode, see [[http://emacs.stackexchange.com/questions/9333/how-does-one-use-flyspell-in-org-buffers-without-flyspell-triggering-on-tangled][here]] @@ -619,6 +652,15 @@ Make flyspell enabled for org-mode, see [[http://emacs.stackexchange.com/questio (if (and b e (< (point) e)) (setq rlt nil))) (setq ad-return-value rlt))) #+END_SRC + +*** Expand-region +#+BEGIN_SRC emacs-lisp :tangle yes :results silent + (use-package expand-region + :ensure t + :config + (global-set-key (kbd "C-=") 'er/expand-region)) +#+END_SRC + ** Motion *** Avy #+BEGIN_SRC emacs-lisp :tangle yes :results silent @@ -630,11 +672,13 @@ Make flyspell enabled for org-mode, see [[http://emacs.stackexchange.com/questio *** =M-g= prefix #+BEGIN_SRC emacs-lisp :tangle yes :results silent - (global-set-key (kbd "M-g g") 'avy-goto-line) + (global-set-key (kbd "M-g j") 'avy-goto-line-below) + (global-set-key (kbd "M-g k") 'avy-goto-line-above) + (global-set-key (kbd "M-g w") 'avy-goto-word-1-below) + (global-set-key (kbd "M-g b") 'avy-goto-word-1-above) (global-set-key (kbd "M-g e") 'avy-goto-word-0) - (global-set-key (kbd "M-g w") 'avy-goto-word-1) - (global-set-key (kbd "M-g c") 'avy-goto-char-timer) - (global-set-key (kbd "M-g f") 'avy-goto-char-in-line) + (global-set-key (kbd "M-g f") 'avy-goto-char-timer) + (global-set-key (kbd "M-g c") 'avy-goto-char-in-line) ;; M-g TAB move-to-column ;; M-g ESC Prefix Command @@ -710,13 +754,6 @@ Use =ESC= to exit minibuffer. Also I map =Super-h= the same as =C-g= ;; C-7 ;; C-Space - - - - - - - #+END_SRC ** =Super= bindings for file, buffer and windows @@ -887,6 +924,7 @@ use the prefix =M-s= for searching in buffers ;; ("\M-w" . save-buffer) ("e" . revert-buffer) ("s" . isearch-forward-regexp) + ("\M-s" . isearch-forward-regexp) ("r" . isearch-backward-regexp) ("." . isearch-forward-symbol-at-point) ("o" . occur) @@ -929,7 +967,6 @@ use the prefix =M-s= for searching in buffers Always indents header, and hide header leading starts so that no need type =#+STATUP: indent= #+BEGIN_SRC emacs-lisp :tangle yes :results silent - (use-package org :ensure t :init @@ -954,11 +991,14 @@ Always indents header, and hide header leading starts so that no need type =#+ST (scheme . t) (sh . t) (sqlite . t) - (js . t))) + (js . t) + (gnuplot . t) + (ditaa . t))) ;; use current window for org source buffer editting (setq org-src-window-setup 'current-window ) + (define-key org-mode-map (kbd "C-'") nil) #+END_SRC ** Org-bullets @@ -1285,6 +1325,9 @@ and Defined keys, using vi keybindings, Refer abo-abo's setting [[https://github #+BEGIN_SRC emacs-lisp :tangle yes :results silent (use-package magit :ensure t + :init + ;; don't ask me to confirm the unsaved change + (setq magit-save-repository-buffers nil) :commands magit-status magit-blame :config (dolist (map (list magit-status-mode-map @@ -1293,7 +1336,8 @@ and Defined keys, using vi keybindings, Refer abo-abo's setting [[https://github magit-staged-section-map)) (define-key map "j" 'magit-section-forward) (define-key map "k" 'magit-section-backward) - (define-key map "D" 'magit-discard-file) + (define-key map "D" 'magit-discard) + (define-key map "O" 'magit-discard-file) (define-key map "n" nil) (define-key map "p" nil) (define-key map "v" 'recenter-top-bottom) @@ -1375,10 +1419,8 @@ Toggle an eshell in split window below, refer [[http://www.howardism.org/Technic #+END_SRC *** Font Zoom - #+BEGIN_SRC emacs-lisp :tangle yes :results silent - (defhydra sd/font-zoom (global-map "") - + (defhydra sd/font-zoom (global-map "") "zoom" ("g" text-scale-increase "in") ("l" text-scale-decrease "out")) @@ -1451,6 +1493,7 @@ Refer [[https://github.com/abo-abo/hydra/blob/master/hydra-examples.el][hydra-ex ("o" delete-other-windows "one" :exit t) ("C-o" ido-switch-buffer "buf" :exit t) ("C-k" sd/delete-current-window "del" :exit t) + ("'" other-window "other" :exit t) ("a" ace-window "ace") ("s" ace-swap-window "swap") ("d" ace-delete-window "ace-one" :exit t) @@ -1469,25 +1512,32 @@ Refer [[https://github.com/abo-abo/hydra/blob/master/hydra-examples.el][hydra-ex *** hydra misc #+BEGIN_SRC emacs-lisp :tangle yes :results silent - (defhydra sd/hydra-misc () + (defhydra sd/hydra-misc (:color red :columns nil) "Miscellaneous Commands" - ("e" eshell "eshell" :color red :exit t) + ("e" eshell "eshell" :exit t) ("p" (lambda () (interactive) - (if (sd/buffer-exist "*Packages*") + (if (not (eq nil (get-buffer "*Packages*"))) (switch-to-buffer "*Packages*") (package-list-packages))) - "list-package" :color red :exit t) - ("g" magit-status "git-status" :color red :exit t)) + "list-package" :exit t) + ("g" magit-status "git-status" :exit t) + ("'" mode-line-other-buffer "last buffer" :exit t) + ("C-'" mode-line-other-buffer "last buffer" :exit t) + ("m" man "man" :exit t) + ("d" dired-jump "dired" :exit t) + ("b" ibuffer "ibuffer" :exit t) + ("q" nil "quit") + ("f" nil "quit")) + + (global-set-key (kbd "C-'") 'sd/hydra-misc/body) #+END_SRC *** hydra launcher #+BEGIN_SRC emacs-lisp :tangle yes :results silent - (defhydra hydra-launcher (:color blue :columns 2) + (defhydra sd/hydra-launcher (:color blue :columns 2) "Launch" - ("h" man "man") - ("s" eshell "eshell") - ("p" package-list-packages "Package") + ("e" emms "emms" :exit t) ("q" nil "cancel")) #+END_SRC @@ -1707,12 +1757,21 @@ Play Go in Emacs, gnugo xpm refert [[https://github.com/okanotor/dotemacs/blob/f #+END_SRC -** dired -=C-o= is defined as a global key for window operation, here unset it in dired mode +** View only for some directory +When see function by =C-h f=, and visit the source code, I would like the buffer is read only. See [[http://emacs.stackexchange.com/questions/3676/how-to-enter-view-only-mode-when-browsing-emacs-source-code-from-help/3681#3681][here]] #+BEGIN_SRC emacs-lisp :tangle yes :results silent - (add-hook 'dired-mode-hook (lambda () - (local-unset-key (kbd "C-o")) - (local-set-key (kbd "o") 'dired-display-file))) + (dir-locals-set-class-variables + 'emacs + '((nil . ((buffer-read-only . t) + (show-trailing-whitespace . nil) + (tab-width . 8) + (eval . (whitespace-mode -1)))))) + + ;; (dir-locals-set-directory-class (expand-file-name "/usr/local/share/emacs") 'emacs) + (dir-locals-set-directory-class "/usr/local/Cellar/emacs" 'emacs) + ;; (dir-locals-set-directory-class "~/.emacs.d/elpa" 'emacs) + (dir-locals-set-directory-class "~/dotfiles/emacs.d/elpa" 'emacs) + (dir-locals-set-directory-class "~/dotfiles/emacs.d/el-get" 'emacs) #+END_SRC ** Info plus @@ -1725,7 +1784,7 @@ Play Go in Emacs, gnugo xpm refert [[https://github.com/okanotor/dotemacs/blob/f ** TODO bookmark ** TODO Calendar -** TODO advice info +** advice info #+BEGIN_SRC emacs-lisp :tangle yes :results silent (defun sd/info-mode () (interactive) @@ -1733,20 +1792,98 @@ Play Go in Emacs, gnugo xpm refert [[https://github.com/okanotor/dotemacs/blob/f (unless (> (length (window-list)) 1) (split-window-right)) (other-window 1) - (info))) + ;; (info) + )) + + ;; (global-set-key (kbd "C-h i") 'sd/info-mode) + + ;; open Info buffer in other window instead of current window + (defadvice info (before my-info (&optional file buf) activate) + (sd/info-mode)) + + (defadvice Info-exit (after my-info-exit activate) + (sd/delete-current-window)) +#+END_SRC + +** TODO Man mode +Color for Man-mode + +** TODO swiper to occur + +** TODO UTF8 +#+BEGIN_SRC emacs-lisp :tangle yes :results silent + ;; (set-language-environment "UTF-8") + ;; (set-default-coding-systems 'utf-8) +#+END_SRC - (global-set-key (kbd "C-h i") 'sd/info-mode) - ;; (add-hook 'Info-mode-hook (lambda () - ;; (define-key Info-mode-map "q" ))) +** Demo It +#+BEGIN_SRC emacs-lisp :tangle yes :results silent + ;; (el-get-bundle howardabrams/demo-it) + + (use-package org-tree-slide + :ensure t) + + ;; (use-package yasnippet + ;; :ensure t) #+END_SRC -* Programming -** Languages +** Presentation +#+BEGIN_SRC emacs-lisp :tangle yes :results silent + (use-package org-tree-slide + :ensure + :config + ;; (define-key org-mode-map "\C-ccp" 'org-tree-slide-mode) + (define-key org-tree-slide-mode-map (kbd "") 'org-tree-slide-content) + (define-key org-tree-slide-mode-map (kbd "") 'org-tree-slide-move-next-tree) + (define-key org-tree-slide-mode-map [escape] 'org-tree-slide-move-previous-tree)) +#+END_SRC + +* dired +=C-o= is defined as a global key for window operation, here unset it in dired mode +#+BEGIN_SRC emacs-lisp :tangle yes :results silent + (use-package dired + :config + (require 'dired-x) + (setq dired-omit-mode t) + (setq dired-omit-files (concat dired-omit-files "\\|^\\..+$")) + (add-hook 'dired-mode-hook (lambda () + (define-key dired-mode-map (kbd "C-o") nil) + (define-key dired-mode-map (kbd "H") 'dired-omit-mode) + (define-key dired-mode-map (kbd "DEL") (lambda () (interactive) (find-alternate-file ".."))) + (dired-omit-mode)))) +#+END_SRC -*** Emacs Lisp +Dired+ +#+BEGIN_SRC emacs-lisp :tangle yes :results silent + (use-package dired+ + :ensure t + :init + (setq diredp-hide-details-initially-flag nil) + :config + (define-key dired-mode-map (kbd "j") 'diredp-next-line) + (define-key dired-mode-map (kbd "k") 'diredp-previous-line) + (define-key dired-mode-map (kbd "g") 'dired-goto-file)) +#+END_SRC +* Completion +company mode and company-statistics #+BEGIN_SRC emacs-lisp :tangle yes :results silent + (use-package company + :ensure t + :diminish company-mode + :init (setq company-idle-delay 0.1) + :config + (global-company-mode)) + (use-package company-statistics + :ensure t + :config + (company-statistics-mode)) +#+END_SRC + +* Programming Language +** Emacs Lisp +#+BEGIN_SRC emacs-lisp :tangle yes :results silent (use-package color-identifiers-mode :ensure t :init @@ -1755,14 +1892,10 @@ Play Go in Emacs, gnugo xpm refert [[https://github.com/okanotor/dotemacs/blob/f :diminish color-identifiers-mode) (global-prettify-symbols-mode t) - #+END_SRC -**** Lispy Mode - In Lisp Mode, =M-o= is defined, but I use this for global hydra window. So here disable this key 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 @@ -1774,15 +1907,14 @@ bindings in =lispy-mode-map= after loaded. see [[http://stackoverflow.com/questi (add-hook 'emacs-lisp-mode-hook (lambda () (lispy-mode 1)))) #+END_SRC -*** Perl - +** Perl +*** CPerl mode [[https://www.emacswiki.org/emacs/CPerlMode][CPerl mode]] has more features than =PerlMode= for perl programming. Alias this to =CPerlMode= - #+BEGIN_SRC emacs-lisp :tangle yes :results silent - (defalias 'perl-mode 'cperl-mode) - ;(setq cperl-hairy t) ;; Turns on most of the CPerlMode options + ;; (setq cperl-hairy t) + ;; Turns on most of the CPerlMode options (setq cperl-auto-newline t) (setq cperl-highlight-variables-indiscriminately t) ;(setq cperl-indent-level 4) @@ -1796,21 +1928,42 @@ bindings in =lispy-mode-map= after loaded. see [[http://stackoverflow.com/questi '(lambda () (cperl-set-style "C++"))) - ;(require 'template) - ;(template-initialize) - ;(require 'perlnow) + (defalias 'perldoc 'cperl-perldoc) +#+END_SRC +*** Perl template +Refer [[https://www.emacswiki.org/emacs/AutoInsertMode][AutoInsertMode]] Wiki +#+BEGIN_SRC emacs-lisp :tangle yes :results silent + (eval-after-load 'autoinsert + '(define-auto-insert '("\\.pl\\'" . "Perl skeleton") + '( + "Empty" + "#!/usr/bin/perl -w" \n + \n + "use strict;" > \n \n + > _ + ))) #+END_SRC -- auto insert -- run script +*** Perl Keywords +#+BEGIN_SRC emacs-lisp :tangle yes :results silent + (font-lock-add-keywords 'cperl-mode + '(("\\(say\\)" . cperl-nonoverridable-face) + ("\\([0-9.]\\)*" . font-lock-constant-face) + ("\".*\\(\\\n\\).*\"" . font-lock-constant-face) + ("\n" . font-lock-constant-face) + ("\\(^#!.*\\)$" . cperl-nonoverridable-face))) + + ;; (font-lock-add-keywords 'Man-mode + ;; '(("\\(NAME\\)" . font-lock-function-name-face))) + +#+END_SRC +*** Run Perl Change the compile-command to set the default command run when call =compile= Mapping =s-r= (on Mac, it's =Command + R= to run the script. Here =current-prefix-arg= is set to call =compilation= interactively. - #+BEGIN_SRC emacs-lisp :tangle yes :results silent - (defun my-perl-hook () (progn (setq-local compilation-read-command nil) @@ -1819,53 +1972,48 @@ to call =compilation= interactively. (if buffer-file-name (shell-quote-argument buffer-file-name)))) (local-set-key (kbd "s-r") - (lambda () - (interactive) - ; (setq current-prefix-arg '(4)) ; C-u - (call-interactively 'compile))))) + (lambda () + (interactive) + ; (setq current-prefix-arg '(4)) ; C-u + (call-interactively 'compile))))) (add-hook 'cperl-mode-hook 'my-perl-hook) - - #+END_SRC -*** C & C++ - +** C & C++ #+BEGIN_SRC emacs-lisp :tangle yes :results silent - (setq c-default-style "stroustrup" c-basic-offset 4) - #+END_SRC -** Compile - +* Compile Set the environments vairables in compilation mode - #+BEGIN_SRC emacs-lisp :tangle yes :results silent - (use-package compile :commands compile :config - (setq compilation-environment (cons "LC_ALL=C" compilation-environment))) + (setq compilation-environment (cons "LC_ALL=C" compilation-environment)) + (setq compilation-auto-jump-to-first-error t) + (setq compilation-auto-jump-to-next t) + (setq compilation-scroll-output 'first-error)) + ;; super-r to compile + (with-eval-after-load "compile" + (define-key compilation-mode-map (kbd "C-o") nil) + (define-key compilation-mode-map (kbd "n") 'compilation-next-error) + (define-key compilation-mode-map (kbd "p") 'compilation-previous-error) + (define-key compilation-mode-map (kbd "r") #'recompile)) #+END_SRC -** Auto-Insert - -Enable auto-insert mode - +* Auto-Insert +** Enable auto-insert mode #+BEGIN_SRC emacs-lisp :tangle yes :results silent - (auto-insert-mode t) (setq auto-insert-query nil) - #+END_SRC -*** C++ Auto Insert - +** C++ Auto Insert #+BEGIN_SRC emacs-lisp :tangle yes :results silent - (eval-after-load 'autoinsert '(define-auto-insert '("\\.cpp\\'" . "C++ skeleton") '( @@ -1904,50 +2052,88 @@ Enable auto-insert mode "return 1;\n" "}" > \n ))) - #+END_SRC -*** Perl Auto Insert - -Refer [[https://www.emacswiki.org/emacs/AutoInsertMode][AutoInsertMode]] Wiki - +** Python template #+BEGIN_SRC emacs-lisp :tangle yes :results silent - (eval-after-load 'autoinsert - '(define-auto-insert '("\\.pl\\'" . "Perl skeleton") + '(define-auto-insert '("\\.\\(py\\)\\'" . "Python skeleton") '( - "Description: " - "#!/usr/bin/perl -w" \n - \n - "use strict;" \n \n + "Empty" + "#import os,sys" \n + \n \n ))) - #+END_SRC -** Completion - -company mode - +** Elisp +Emacs lisp auto-insert, based on the default module in =autoinsert.el=, but replace =completing-read= as +=completing-read-ido-ubiquitous= to fix the edge case of that =ido= cannot handle. #+BEGIN_SRC emacs-lisp :tangle yes :results silent - - (use-package company - :ensure t - :diminish company-mode - :init (setq company-idle-delay 0.1) - :config - (global-company-mode)) - -#+END_SRC - -[[https://github.com/company-mode/company-statistics][company-statistics]] - + (eval-after-load 'autoinsert + '(define-auto-insert '("\\.el\\'" . "my Emacs Lisp header") + '( + "Short description: " + ";;; " (file-name-nondirectory (buffer-file-name)) " --- " str + (make-string (max 2 (- 80 (current-column) 27)) ?\s) + "-*- lexical-binding: t; -*-" '(setq lexical-binding t) + "\n + ;; Copyright (C) " (format-time-string "%Y") " " + (getenv "ORGANIZATION") | (progn user-full-name) " + + ;; Author: " (user-full-name) + '(if (search-backward "&" (line-beginning-position) t) + (replace-match (capitalize (user-login-name)) t t)) + '(end-of-line 1) " <" (progn user-mail-address) "> + ;; Keywords: " + '(require 'finder) + ;;'(setq v1 (apply 'vector (mapcar 'car finder-known-keywords))) + '(setq v1 (mapcar (lambda (x) (list (symbol-name (car x)))) + finder-known-keywords) + v2 (mapconcat (lambda (x) (format "%12s: %s" (car x) (cdr x))) + finder-known-keywords + "\n")) + ((let ((minibuffer-help-form v2)) + (completing-read-ido-ubiquitous "Keyword, C-h: " v1 nil t)) + str ", ") & -2 " + + \;; This program is free software; you can redistribute it and/or modify + \;; it under the terms of the GNU General Public License as published by + \;; the Free Software Foundation, either version 3 of the License, or + \;; (at your option) any later version. + + \;; This program is distributed in the hope that it will be useful, + \;; but WITHOUT ANY WARRANTY; without even the implied warranty of + \;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + \;; GNU General Public License for more details. + + \;; You should have received a copy of the GNU General Public License + \;; along with this program. If not, see . + + \;;; Commentary: + + \;; " _ " + + \;;; Code: + + + \(provide '" + (file-name-base) + ") + \;;; " (file-name-nondirectory (buffer-file-name)) " ends here\n"))) +#+END_SRC + +** Org file template #+BEGIN_SRC emacs-lisp :tangle yes :results silent - - (use-package company-statistics - :ensure t - :config - (company-statistics-mode)) - + (eval-after-load 'autoinsert + '(define-auto-insert '("\\.\\(org\\)\\'" . "Org-mode skeleton") + '( + "title: " + "#+TITLE: " str (make-string 30 ?\s) > \n + "#+AUTHOR: Peng Li\n" + "#+EMAIL: seudut@gmail.com\n" + "#+DATE: " (shell-command-to-string "echo -n $(date +%Y-%m-%d)") > \n + > \n + > _))) #+END_SRC * Markdown mode @@ -2093,7 +2279,67 @@ See [[https://www.emacswiki.org/emacs/GnusWindowLayout][GnusWindowLayout]] ;; (gnus-group-select-group "INBOX"))) #+END_SRC +* Gnu Plot +To fix some issue that =toolbar-make-button-list= is void, see the [[https://github.com/bruceravel/gnuplot-mode/issues/31][issue]], here I set some variable as =nil= +#+BEGIN_SRC emacs-lisp :tangle yes :results silent + (use-package gnuplot + :ensure + :init + (setq gnuplot-help-xpm nil) + (setq gnuplot-line-xpm nil) + (setq gnuplot-region-xpm nil) + (setq gnuplot-buffer-xpm nil) + (setq gnuplot-doc-xpm nil)) +#+END_SRC + +Use =gnuplot= on =Org-mode= file, see [[http://orgmode.org/worg/org-contrib/babel/languages/ob-doc-gnuplot.html][ob-doc-gnuplot]] +#+BEGIN_SRC gnuplot :exports code :file ./temp/file.png + reset + + set title "Putting it All Together" + + set xlabel "X" + set xrange [-8:8] + set xtics -8,2,8 + + + set ylabel "Y" + set yrange [-20:70] + set ytics -20,10,70 + + f(x) = x**2 + g(x) = x**3 + h(x) = 10*sqrt(abs(x)) + + plot f(x) w lp lw 1, g(x) w p lw 2, h(x) w l lw 3 +#+END_SRC + +#+RESULTS: +[[file:./temp/file.png]] + +* Blog +#+BEGIN_SRC emacs-lisp :tangle yes :results silent + +#+END_SRC + * key - passion - vision - mission +* TODO Convert ASCII to key +** map =function-key-map= [[http://academic.evergreen.edu/projects/biophysics/technotes/program/ascii_ctrl.htm][ascii_ctrl]] +new file =C-x C-f C-f= + +** write color syntax for =Man-mode= + +#+BEGIN_SRC emacs-lisp :tangle yes :results silent + (font-lock-add-keywords 'perl-mode '(("\\(|\\w+?\\(,\\w+?\\)?|\\)" 1 'py-builtins-face))) +#+END_SRC + +* TODO set fly-spell binding + +* TODO imenu bindings + +* TODO modified indicator +* TODO highlight selected ido candicate +* TODO show time in right of mode-line