#+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/buffer-view-active1 '((t (:background "green" :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)
'("%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
+ (if buffer-read-only 'sd/buffer-view-active1
+ my-face1)))
(face1 (if active 'powerline-active1 'powerline-inactive1))
(face2 (if active 'powerline-active2 'powerline-inactive2))
(separator-left (intern (format "powerline-%s-%s"
(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 ") 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)
#+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
+ (set-variable 'powerline-height 14)
+ (set-variable 'powerline-text-scale-factor (/ (float 100) 140))
+ ;; (custom-set-variables
+ ;; '(powerline-height 14)
+ ;; '(powerline-text-scale-factor (/ (float 100) 140)))
+ ;; 100/140;0.8
(set-face-attribute 'mode-line nil :height 100)
-
#+END_SRC
* IDO & SMEX
;; ;; 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
(global-set-key (kbd "C-=") 'er/expand-region))
#+END_SRC
-** Motion
-*** Avy
-#+BEGIN_SRC emacs-lisp :tangle yes :results silent
- (use-package avy
- :ensure t
- :config
- (avy-setup-default))
-#+END_SRC
-
-*** =M-g= prefix
-#+BEGIN_SRC emacs-lisp :tangle yes :results silent
- (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 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
- ;; M-g c goto-char
- ;; M-g g goto-line
- ;; M-g n next-error
- ;; M-g p previous-error
-
- ;; M-g M-g goto-line
- ;; M-g M-n next-error
- ;; M-g M-p previous-error
-#+END_SRC
-
-
-** Search & highlight
* Key bindings
** Esc on Minibuffer
#+END_SRC
-** =Ctrl= key bindings
-
-#+BEGIN_SRC emacs-lisp :tangle yes :results silent
- ;;
-
- ;; C-h help
- ;; C-j newline and indent
- ;; C-k kill line
- ;; C-l recenter-top-bottom
- ;; (global-set-key (kbd "C-;") 'ido-switch-buffer)
- ;; C-;
- ;; C-'
- ;; C-ret
-
- ;; C-n next-line
- ;; C-m
- ;; C-,
- ;; C-.
- ;; C-/
-
- ;; C-y
- ;; C-u
- ;; C-i
- ;; C-o
- ;; C-p
- ;; C-[
- ;; C-]
- ;; C-\
-
- ;; C-=
- ;; C--
- ;; C-0
- ;; C-9
- ;; C-8
- ;; C-7
-
- ;; C-Space
-#+END_SRC
-
** =Super= bindings for file, buffer and windows
Some global bindings on =Super=, on Mac, it is =Command=
#+END_SRC
** Search Replace and highlight
-*** Occur
-Occur search key bindings
-#+BEGIN_SRC emacs-lisp :tangle yes :results silent
- (add-hook 'occur-hook (lambda ()
- (switch-to-buffer-other-window "*Occur*")
- (define-key occur-mode-map (kbd "C-o") nil)))
- ;; auto select occur window
-
- (define-key occur-mode-map (kbd "C-n")
- (lambda ()
- (interactive)
- (occur-next)
- (occur-mode-goto-occurrence-other-window)
- (recenter)
- (other-window 1)))
-
- (define-key occur-mode-map (kbd "C-p")
- (lambda ()
- (interactive)
- (occur-prev)
- (occur-mode-goto-occurrence-other-window)
- (recenter)
- (other-window 1)))
-
- (use-package color-moccur
- :ensure t
- :commands (isearch-moccur isearch-all)
- :init
- (setq isearch-lazy-highlight t)
- :config
- (use-package moccur-edit))
-#+END_SRC
-
*** swiper
#+BEGIN_SRC emacs-lisp :tangle yes :results silent
(use-package swiper
(ivy-mode 1)
(setq ivy-use-virtual-buffers t)
(global-set-key (kbd "s-/") 'swiper)
+
+ (use-package counsel
+ :ensure t
+ :defer t)
;;*
;; (global-set-key "\C-s" 'swiper)
;; (global-set-key (kbd "C-c C-r") 'ivy-resume)
;; (global-set-key (kbd "<f6>") 'ivy-resume)
- ;; ;; (global-set-key (kbd "M-x") 'counsel-M-x)
+ (global-set-key (kbd "M-x") 'counsel-M-x)
;; ;; (global-set-key (kbd "C-x C-f") 'counsel-find-file)
- ;; (global-set-key (kbd "<f1> f") 'counsel-describe-function)
- ;; (global-set-key (kbd "<f1> v") 'counsel-describe-variable)
+ (global-set-key (kbd "C-h f") 'counsel-describe-function)
+ (global-set-key (kbd "C-h v") 'counsel-describe-variable)
;; (global-set-key (kbd "<f1> l") 'counsel-load-library)
;; (global-set-key (kbd "<f2> i") 'counsel-info-lookup-symbol)
;; (global-set-key (kbd "<f2> u") 'counsel-unicode-char)
;; (global-set-key (kbd "C-S-o") 'counsel-rhythmbox)
;; ;; (define-key read-expression-map (kbd "C-r") 'counsel-expression-history)
+ (set-face-attribute
+ 'ivy-current-match nil
+ :background "Orange"
+ :foreground "black")
#+END_SRC
*** =M-s= prefix
;; M-u,
#+END_SRC
-** =M-o= as prefix key for windows
-
-** =M-g= as prefix key for launcher
-
* Org-mode Settings
** Org-mode Basic setting
(sh . t)
(sqlite . t)
(js . t)
- (gnuplot . 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)
+ ;; 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))
#+END_SRC
** Org-bullets
#+END_SRC
-*** hydra-window
-#+BEGIN_SRC emacs-lisp :tangle yes :results silent
- (winner-mode 1)
-
- (defhydra sd/hydra-window (:color red :columns nil)
- "window"
- ("h" windmove-left nil :exit t)
- ("j" windmove-down nil :exit t)
- ("k" windmove-up nil :exit t)
- ("l" windmove-right nil :exit t)
- ("H" hydra-move-splitter-left nil)
- ("J" hydra-move-splitter-down nil)
- ("K" hydra-move-splitter-up nil)
- ("L" hydra-move-splitter-right nil)
- ("v" (lambda ()
- (interactive)
- (split-window-right)
- (windmove-right))
- "vert" :exit t)
- ("x" (lambda ()
- (interactive)
- (split-window-below)
- (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)
- ("'" other-window "other" :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" :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")
- ("r" (progn (winner-redo) (setq this-command 'winner-redo)) "redo")
- ("f" nil))
-
- (global-unset-key (kbd "C-o"))
- (global-set-key (kbd "C-o") 'sd/hydra-window/body)
-#+END_SRC
-
*** hydra misc
#+BEGIN_SRC emacs-lisp :tangle yes :results silent
(defhydra sd/hydra-misc (:color red :columns nil)
Enable linum mode on programming modes
#+BEGIN_SRC emacs-lisp :tangle yes :results silent
-
(add-hook 'prog-mode-hook 'linum-mode)
-
+ ;; (add-hook 'prog-mode-hook (lambda ()
+ ;; (setq-default indicate-empty-lines t)))
#+END_SRC
Fix the font size of line number
#+END_SRC
+** 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
+ (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
#+BEGIN_SRC emacs-lisp :tangle yes :results silent
(el-get-bundle info+
** 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
)))
#+END_SRC
+*** 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
- passion
- vision
- mission
+* Ediff
+#+BEGIN_SRC emacs-lisp :tangle yes :results silent
+ (with-eval-after-load 'ediff
+ (setq ediff-split-window-function 'split-window-horizontally)
+ (setq ediff-window-setup-function 'ediff-setup-windows-plain)
+ (add-hook 'ediff-startup-hook 'ediff-toggle-wide-display)
+ (add-hook 'ediff-cleanup-hook 'ediff-toggle-wide-display)
+ (add-hook 'ediff-suspend-hook 'ediff-toggle-wide-display))
+#+END_SRC
+
* 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=
#+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
+
+* DONE modified indicator
+:LOGBOOK:
+- State "DONE" from "TODO" [2016-07-18 Mon 23:35]
+:END:
+* DONE highlight selected ido candicate
+:LOGBOOK:
+- State "DONE" from "TODO" [2016-07-19 Tue 01:49]
+:END:
+* DONE show time in right of mode-line
+:LOGBOOK:
+- State "DONE" from "TODO" [2016-07-19 Tue 01:11]
+:END:
+* DONE ediff mode
+:LOGBOOK:
+- State "DONE" from "TODO" [2016-07-19 Tue 01:11]
+:END:
+* TODO jump last change point
+* TODO emms mode-line
+
+* NEXT Key Bindings
+Here are some global key bindings for basic editting
+** Project operations - =super=
+=projectile= settins
+** Windown & Buffer - =C-o=
+Defind a =hydra= function for windows, buffer & bookmark operations. And map it to =C-o= globally.
+Most use =C-o C-o= to switch buffers; =C-o x, v= to split window; =C-o o= to delete other windows
+#+BEGIN_SRC emacs-lisp :tangle yes :results silent
+ (winner-mode 1)
+
+ (defhydra sd/hydra-window (:color red :columns nil)
+ "window"
+ ("h" windmove-left nil :exit t)
+ ("j" windmove-down nil :exit t)
+ ("k" windmove-up nil :exit t)
+ ("l" windmove-right nil :exit t)
+ ("H" hydra-move-splitter-left nil)
+ ("J" hydra-move-splitter-down nil)
+ ("K" hydra-move-splitter-up nil)
+ ("L" hydra-move-splitter-right nil)
+ ("v" (lambda ()
+ (interactive)
+ (split-window-right)
+ (windmove-right))
+ "vert" :exit t)
+ ("x" (lambda ()
+ (interactive)
+ (split-window-below)
+ (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)
+ ("'" other-window "other" :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" :exit t)
+ ("C-b" ido-switch-buffer "buf" :exit t)
+ ("m" bookmark-jump-other-window "open bmk" :exit t)
+ ("M" bookmark-set "set bmk" :exit t)
+ ("q" nil "cancel")
+ ("u" (progn (winner-undo) (setq this-command 'winner-undo)) "undo")
+ ("r" (progn (winner-redo) (setq this-command 'winner-redo)) "redo")
+ ("C-h" nil nil :exit t)
+ ("C-j" nil nil :exit t)
+ ;; ("C-k" nil :exit t)
+ ("C-l" nil nil :exit t)
+ ("C-;" nil nil :exit t)
+ ("p" nil nil :exit t)
+ ("n" nil nil :exit t)
+ ("[" nil nil :exit t)
+ ("]" nil nil :exit t)
+ ("f" nil))
- (font-lock-add-keywords
- 'cperl-mode
- '(("\\(say\\)" . font-lock-constant-face)))
+ (global-unset-key (kbd "C-o"))
+ (global-set-key (kbd "C-o") 'sd/hydra-window/body)
#+END_SRC
+** Edit
+- cut, yank, =C-w=, =C-y=
+- save, revert
+- undo, redo - undo-tree
+- select, expand-region
+- spell check, flyspell
+
+** Motion - =C-M-=
+Use =Avy= for motion
+#+BEGIN_SRC emacs-lisp :tangle yes :results silent
+ (use-package avy
+ :ensure t
+ :config
+ (avy-setup-default))
+
+ (global-set-key (kbd "C-M-j") 'avy-goto-line-below)
+ (global-set-key (kbd "C-M-n") 'avy-goto-line-below)
+ (global-set-key (kbd "C-M-k") 'avy-goto-line-above)
+ (global-set-key (kbd "C-M-p") 'avy-goto-line-above)
+
+ (global-set-key (kbd "C-M-f") 'avy-goto-word-1-below)
+ (global-set-key (kbd "C-M-b") 'avy-goto-word-1-above)
+
+ ;; (global-set-key (kbd "M-g e") 'avy-goto-word-0)
+ (global-set-key (kbd "C-M-w") 'avy-goto-char-timer)
+ (global-set-key (kbd "C-M-l") 'avy-goto-char-in-line)
+
+ ;; will delete above
+ (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 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
+ ;; M-g c goto-char
+ ;; M-g g goto-line
+ ;; M-g n next-error
+ ;; M-g p previous-error
+
+ ;; M-g M-g goto-line
+ ;; M-g M-n next-error
+ ;; M-g M-p previous-error
+#+END_SRC
+
+=imenu=, mapping =C-M-i= to =counsel-imenu=
+#+BEGIN_SRC emacs-lisp :tangle yes :results silent
+ (global-unset-key (kbd "C-M-i"))
+ (global-set-key (kbd "C-M-i") #'counsel-imenu)
+#+END_SRC
+
+** Search & Replace / hightlight =M-s=
+*** search
+*** replace
+*** hightlight
+#+BEGIN_SRC emacs-lisp :tangle yes :results silent
+
+ ;; (defhydra sd/search-highlight (:color red :columns nil)
+ ;; "search"
+ ;; ("M-s" . isearch-forward-regexp "search-forward" :exit t)
+ ;; ("s" . isearch-forward-regexp "search-forward" :exit t)
+ ;; ("r" . isearch-backward-regexp "search-backward" :exit t)
+ ;; )
+
+ ;; (setq-default indicate-empty-lines t)
+#+END_SRC
+
+*** Occur
+Occur search key bindings
+#+BEGIN_SRC emacs-lisp :tangle yes :results silent
+ (defun sd/occur-keys ()
+ "My key bindings in occur-mode"
+ (interactive)
+ (switch-to-buffer-other-window "*Occur*")
+ (define-key occur-mode-map (kbd "C-o") nil)
+ (define-key occur-mode-map (kbd "C-n") (lambda ()
+ (interactive)
+ (occur-next)
+ (occur-mode-goto-occurrence-other-window)
+ (recenter)
+ (other-window 1)))
+ (define-key occur-mode-map (kbd "C-p") (lambda ()
+ (interactive)
+ (occur-prev)
+ (occur-mode-goto-occurrence-other-window)
+ (recenter)
+ (other-window 1))))
+
+ (add-hook 'occur-hook #'sd/occur-keys)
+
+ (use-package color-moccur
+ :ensure t
+ :commands (isearch-moccur isearch-all)
+ :init
+ (setq isearch-lazy-highlight t)
+ :config
+ (use-package moccur-edit))
+#+END_SRC
+
+* test
+#+BEGIN_SRC ditaa :file temp/hello-world.png :cmdline -r
++--------------+
+| |
+| Hello World! |
+| |
++--------------+
+#+END_SRC
+
+#+RESULTS:
+[[file:temp/hello-world.png]]
+
+
+* =C-u C-h a= search funtions
+=apropos-command=