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
(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)
(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
#+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
#+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
;; enable flyspell check on comments and strings in progmamming modes
(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]]
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
;; 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
#+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
#+END_SRC
*** Font Zoom
-
#+BEGIN_SRC emacs-lisp :tangle yes :results silent
- (defhydra sd/font-zoom (global-map "<f2>")
-
+ (defhydra sd/font-zoom (global-map "<f2>")
"zoom"
("g" text-scale-increase "in")
("l" text-scale-decrease "out"))
("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)
*** 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
#+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
- (add-hook 'dired-mode-hook (lambda ()
- (local-unset-key (kbd "C-o"))
- (local-set-key (kbd "o") 'dired-display-file)))
-#+END_SRC
-
** Info plus
#+BEGIN_SRC emacs-lisp :tangle yes :results silent
(el-get-bundle info+
(sd/delete-current-window))
#+END_SRC
+** TODO Man mode
+Color for Man-mode
+#+BEGIN_SRC emacs-lisp :tangle yes :results silent
+ ;; (add-hook 'Man-mode-hook (lambda ()
+ ;; (interactive)
+ ;; (setenv "GROFF_NO_SRG")))
+#+END_SRC
+
+** 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
+
+** 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
+
+** 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 "<ESC>") 'org-tree-slide-content)
+ (define-key org-tree-slide-mode-map (kbd "<SPACE>") '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
+
+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
+
* Programming
** Languages
#+END_SRC
** 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)))
+ ;; 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
-
+*** 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
#+END_SRC
+*** 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
+ (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 <http://www.gnu.org/licenses/>.
+
+ \;;; 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
+ (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
+
** Completion
company mode
;; (gnus-group-select-group "INBOX")))
#+END_SRC
+* 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=