(if window-system
(when sd/fixed-font-family
(set-frame-font sd/fixed-font-family)
- (set-face-attribute 'default nil :font sd/fixed-font-family :height 120)
+ (set-face-attribute 'default nil :font sd/fixed-font-family :height 140)
(set-face-font 'default sd/fixed-font-family)))
#+END_SRC
#+END_SRC
-** Mode-line
+* Mode-line
+
+** clean mode line
clean mode line, Refer to [[https://www.masteringemacs.org/article/hiding-replacing-modeline-strings][Marstering Emacs]]
;; default is SP
(smartparens-mode . "")
;; default is LR
- (linum-mode . "")
+ (linum-relative-mode . "")
+ ;; default is ARev
+ (auto-revert-mode . "")
+ ;; default is Ind
+ (org-indent-mode . "")
;; Major modes
(lisp-interaction-mode . "λ")
(hi-lock-mode . "")
(python-mode . "Py")
(emacs-lisp-mode . "EL")
+ (eshell-mode . "ε")
(nxhtml-mode . "nx"))
"Alist for `clean-mode-line'.
(add-hook 'after-change-major-mode-hook 'clean-mode-line)
#+END_SRC
+** Powerline mode
+
+Install powerline mode [[https://github.com/milkypostman/powerline][powerline]]
+
#+BEGIN_SRC emacs-lisp :tangle yes :results silent
(use-package powerline
:ensure t
:config
- (powerline-center-theme))
+ ;; (powerline-center-theme)
+ )
;; (use-package smart-mode-line
;; :ensure t)
;; :ensure t)
#+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))
+
+ (defun sd/powerline-center-theme_revised ()
+ "Setup a mode-line with major and minor modes centered."
+ (interactive)
+ (setq-default mode-line-format
+ '("%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 (if active 'mode-line 'mode-line-inactive))
+ (face1 (if active 'powerline-active1 'powerline-inactive1))
+ (face2 (if active 'powerline-active2 'powerline-inactive2))
+ (separator-left (intern (format "powerline-%s-%s"
+ (powerline-current-separator)
+ (car powerline-default-separator-dir))))
+ (separator-right (intern (format "powerline-%s-%s"
+ (powerline-current-separator)
+ (cdr powerline-default-separator-dir))))
+ (lhs (list (powerline-raw "%*" mode-line 'l)
+ ;; (powerline-buffer-size mode-line 'l)
+ (powerline-buffer-id mode-line-buffer-id 'l)
+ (powerline-raw " ")
+ (funcall separator-left mode-line face1)
+ (powerline-narrow face1 'l)
+ ;; (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 "%3c" face1 'r)
+ (funcall separator-right face1 mode-line)
+ (powerline-raw " ")
+ (powerline-raw "%6p" mode-line 'r)
+ (powerline-hud face2 face1)))
+ (center (list (powerline-raw " " face1)
+ (funcall separator-left face1 face2)
+ (when (and (boundp 'erc-track-minor-mode) erc-track-minor-mode)
+ (powerline-raw erc-modified-channels-object face2 'l))
+ (powerline-major-mode face2 'l)
+ (powerline-process face2)
+ (powerline-raw " :" face2)
+ (powerline-minor-modes face2 'l)
+ (powerline-raw " " face2)
+ (funcall separator-right face2 face1))))
+ (concat (powerline-render lhs)
+ (powerline-fill-center face1 (/ (powerline-width center) 2.0))
+ (powerline-render center)
+ (powerline-fill face1 (powerline-width rhs))
+ (powerline-render rhs)))))))
+
+ (sd/powerline-center-theme_revised)
+#+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-face-attribute 'mode-line nil :height 100)
#+END_SRC
#+END_SRC
-** Task Management
+** Get Things Done
+
+Refer to [[http://doc.norang.ca/org-mode.html][Organize Your Life in Plain Text]]
+*** basic setup
+
+standard key binding
+
+#+BEGIN_SRC emacs-lisp :tangle yes :results silent
+ (global-set-key "\C-cl" 'org-store-link)
+ (global-set-key "\C-ca" 'org-agenda)
+ (global-set-key "\C-cb" 'org-iswitchb)
+#+END_SRC
+
+*** Plain List
+
+Replace the list bullet =-=, =+=, with =•=, a litter change based [[https://github.com/howardabrams/dot-files/blob/master/emacs-org.org][here]]
+
+#+BEGIN_SRC emacs-lisp :tangle yes :results silent
+ (use-package org-mode
+ :init
+ (font-lock-add-keywords 'org-mode
+ '(("^ *\\([-+]\\) "
+ (0 (prog1 () (compose-region (match-beginning 1) (match-end 1) "•")))))))
+#+END_SRC
+
+*** Todo Keywords
+
+refer to [[http://coldnew.github.io/coldnew-emacs/#orgheadline94][fancy todo states]],
+
+To track TODO state changes, the =!= is to insert a timetamp, =@= is to insert a note with
+timestamp for the state change.
+
+#+BEGIN_SRC emacs-lisp :tangle yes :results silent
+ ;; (setq org-todo-keywords
+ ;; '((sequence "☛ TODO(t)" "|" "✔ DONE(d)")
+ ;; (sequence "⚑ WAITING(w)" "|")
+ ;; (sequence "|" "✘ CANCELLED(c)")))
+ ; (setq org-todo-keyword-faces
+ ; (quote ("TODO" . (:foreground "red" :weight bold))
+ ; ("NEXT" . (:foreground "blue" :weight bold))
+ ; ("WAITING" . (:foreground "forest green" :weight bold))
+ ; ("DONE" . (:foreground "magenta" :weight bold))
+ ; ("CANCELLED" . (:foreground "forest green" :weight bold))))
+
+
+ (setq org-todo-keywords
+ (quote ((sequence "TODO(t)" "NEXT(n)" "|" "DONE(d!)")
+ ;; (sequence "WAITING(w@/!)" "HOLD(h@/!)" "|" "CANCELLED(c@/!)" "PHONE" "MEETING")
+ (sequence "WAITING(w@/!)" "HOLD(h@/!)" "|" "CANCELLED(c@/!)" ))))
+
+ (setq org-todo-keyword-faces
+ (quote (("TODO" :foreground "red" :weight bold)
+ ("NEXT" :foreground "blue" :weight bold)
+ ("DONE" :foreground "forest green" :weight bold)
+ ("WAITING" :foreground "orange" :weight bold)
+ ("HOLD" :foreground "magenta" :weight bold)
+ ("CANCELLED" :foreground "forest green" :weight bold)
+ ;; ("MEETING" :foreground "forest green" :weight bold)
+ ;; ("PHONE" :foreground "forest green" :weight bold)
+ )))
+#+END_SRC
+
+Fast todo selections
+
+#+BEGIN_SRC emacs-lisp :tangle yes :results silent
+ (setq org-use-fast-todo-selection t)
+ (setq org-treat-S-cursor-todo-selection-as-state-change nil)
+#+END_SRC
+
+TODO state triggers and tags, [[http://doc.norang.ca/org-mode.html][Organize Your Life in Plain Text]]
+
+- Moving a task to =CANCELLED=, adds a =CANCELLED= tag
+- Moving a task to =WAITING=, adds a =WAITING= tag
+- Moving a task to =HOLD=, add =HOLD= tags
+- Moving a task to =DONE=, remove =WAITING=, =HOLD= tag
+- Moving a task to =NEXT=, remove all waiting/hold/cancelled tags
+
+This tags are used to filter tasks in agenda views
+#+BEGIN_SRC emacs-lisp :tangle yes :results silent
+ (setq org-todo-state-tags-triggers
+ (quote (("CANCELLED" ("CANCELLED" . t))
+ ("WAITING" ("WAITING" . t))
+ ("HOLD" ("WAITING") ("HOLD" . t))
+ (done ("WAITING") ("HOLD"))
+ ("TODO" ("WAITING") ("CANCELLED") ("HOLD"))
+ ("NEXT" ("WAITING") ("CANCELLED") ("HOLD"))
+ ("DONE" ("WAITING") ("CANCELLED") ("HOLD")))))
+#+END_SRC
+
+*** Capture - Refile - Archive
+
+Capture lets you quickly store notes with little interruption of your work flow.
+
+**** Capture Templates
+
+When a new taks needs to be added, categorize it as
+
+All captured file which need next actions are stored in =refile.org=,
+- A new task / note (t) =refile.org=
+- A work task in office =office.org=
+- A jourenl =diary.org=
+- A new habit (h) =refile.org=
+
+#+BEGIN_SRC emacs-lisp :tangle yes :results silent
+ (setq org-directory "~/org")
+ (setq org-default-notes-file "~/org/refile.org")
+ (setq sd/org-diary-file "~/org/diary.org")
+
+ (global-set-key (kbd "C-c c") 'org-capture)
+
+ (setq org-capture-templates
+ (quote (("t" "Todo" entry (file org-default-notes-file)
+ "* TODO %?\n%a\n" :clock-in t :clock-resume t)
+ ("n" "Note" entry (file org-default-notes-file)
+ "* %? :NOTE:\n%a\n" :clock-in t :clock-resume t)
+ ("j" "Journal" entry (file+datetree sd/org-diary-file)
+ "* %?\n" :clock-in t :clock-resume t)
+ ("h" "Habit" entry (file org-default-notes-file)
+ "* NEXT %?\n%a\nSCHEDULED: %(format-time-string \"%<<%Y-%m-%d %a .+1d/3d>>\")\n:PROPERTITES:\n:STYLE: habit\n:REPEAT_TO_STATE: NEXT\n:END:\n "))))
+#+END_SRC
+
+**** Refiling Tasks
+
+#+BEGIN_SRC emacs-lisp :tangle yes :results silent
+ (setq org-refile-targets (quote (;; (nil :maxlevel . 9)
+ (org-agenda-files :maxlevel . 9))))
+
+ (setq org-refile-use-outline-path t)
+
+ (setq org-refile-allow-creating-parent-nodes (quote confirm))
+#+END_SRC
+*** Agenda Setup
+
+#+BEGIN_SRC emacs-lisp :tangle yes :results silent
+ (setq org-agenda-files (quote ("~/org/plan.org"
+ "~/org/test.org")))
+#+END_SRC
** Capture
** others
-refer to [[http://coldnew.github.io/coldnew-emacs/#orgheadline94][fancy todo states]]
-
-#+BEGIN_SRC emacs-lisp :tangle yes :results silent
-
- (setq org-todo-keywords '((sequence "☛ TODO(t)" "|" "✔ DONE(d)")
- (sequence "⚑ WAITING(w)" "|")
- (sequence "|" "✘ CANCELED(c)")))
-
-#+END_SRC
-
extend org-mode's easy templates, refer to [[http://coldnew.github.io/coldnew-emacs/#orgheadline94][Extend org-modes' esay templates]]
#+BEGIN_SRC emacs-lisp :tangle yes :results silent
(add-to-list 'org-structure-template-alist
- '("E" "#+BEGIN_SRC emacs-lisp\n?\n#+END_SRC"))
+ '("E" "#+BEGIN_SRC emacs-lisp :tangle yes :results silent\n?\n#+END_SRC"))
(add-to-list 'org-structure-template-alist
'("S" "#+BEGIN_SRC sh\n?\n#+END_SRC"))
(add-to-list 'org-structure-template-alist
:ensure t
:commands magit-status magit-blame)
-
#+END_SRC
* IDO & SMEX