emacs - fix some start issue after elpa folder is deleted
[dotfiles.git] / emacs.d / config.org
index 86aa8fd..126f90c 100644 (file)
@@ -38,7 +38,7 @@ Set system PATH and emacs exec path
       (menu-bar-mode 1)
     (menu-bar-mode 0))
 
-  ;; (setq debug-on-error t)
+  (setq debug-on-error t)
   (setq inhibit-startup-message t)
 
   (defalias 'yes-or-no-p 'y-or-n-p)
@@ -133,17 +133,6 @@ Check out [[http://tapoueh.org/emacs/el-get.html][el-get]].
     :ensure t)
 #+END_SRC
 
-* Mac Specific
-#+BEGIN_SRC emacs-lisp :tangle yes :results silent
-  ;; (defconst *is-a-mac* (eq system-type 'darwin))
-  ;; (setq mouse-wheel-scroll-amount '(1
-  ;;                                   ((shift) . 5)
-  ;;                                   ((control))))
-
-
-  ;; (setq-default indicate-empty-lines t)
-#+END_SRC
-
 * Color and Fonts Settings
 ** highlight current line
 #+BEGIN_SRC emacs-lisp :tangle yes :results silent
@@ -267,6 +256,8 @@ Loading theme should be after all required loaded, refere [[https://github.com/j
 
 #+BEGIN_SRC emacs-lisp :tangle yes :results silent
   (setq vc-follow-symlinks t)
+  (use-package molokai-theme
+    :ensure t)
 
   (use-package color-theme
     :ensure t
@@ -406,7 +397,8 @@ Enable rainbow mode in emacs lisp mode
 
 ** cusor color
 #+BEGIN_SRC emacs-lisp :tangle yes :results silent
-  (set-cursor-color 'red)
+  (if (display-graphic-p)
+      (set-cursor-color 'red))
 #+END_SRC
 
 * Mode-line
@@ -583,12 +575,14 @@ Fix the issue in mode line when showing triangle
 set height in mode line
 #+BEGIN_SRC emacs-lisp :tangle yes :results silent
   (with-eval-after-load "powerline"
-    (let* ((base-font-size (face-attribute 'default :height)))
-      ;; 100/140;0.8
-      (set-variable 'powerline-height (/ base-font-size 10))
-      (set-variable 'powerline-text-scale-factor (/ (float 100) base-font-size)))
-    (set-face-attribute 'mode-line nil :height 100)
-    (set-face-attribute 'mode-line-inactive nil :height 100))
+    (if window-system
+        (progn 
+          (let* ((base-font-size (face-attribute 'default :height)))
+            ;; 100/140;0.8
+            (set-variable 'powerline-height (/ base-font-size 10))
+            (set-variable 'powerline-text-scale-factor (/ (float 100) base-font-size)))
+          (set-face-attribute 'mode-line nil :height 100)
+          (set-face-attribute 'mode-line-inactive nil :height 100))))
 #+END_SRC
 
 * IDO & SMEX
@@ -732,11 +726,38 @@ Always indents header, and hide header leading starts so that no need type =#+ST
     (add-to-list 'org-modules 'org-habit)
     (setq org-habit-graph-column 50)
     (setq org-hide-emphasis-markers t)
-    (setq org-html-validation-link nil))
+    (setq org-html-validation-link nil)
+    ;; open link when return clicked
+    (setq org-return-follows-link t)
+    ;; open the ppt file by external open instead of emacs
+    (add-to-list 'org-file-apps '("\\.pptx" . "open %s"))
+    (add-to-list 'org-file-apps '("\\.doc" . "open %s"))
+    (setq org-image-actual-width nil))
+#+END_SRC
+
 
+** Org babel
+#+BEGIN_SRC emacs-lisp :tangle yes :results silent
   (el-get-bundle hasu/emacs-ob-racket
     :features ob-racket)
 
+  ;; Lua support
+  ;(use-package ob-lua
+  ;  :ensure 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))
+
   (org-babel-do-load-languages 'org-babel-load-languages
                                '((python . t)
                                  (C . t)
@@ -745,7 +766,7 @@ Always indents header, and hide header leading starts so that no need type =#+ST
                                  (latex . t)
                                  (java . t)
                                  (ruby . t)
-                                 (lua . t)
+  ;                               (lua . t)
                                  (lisp . t)
                                  (scheme . t)
                                  (racket . t)
@@ -753,24 +774,38 @@ Always indents header, and hide header leading starts so that no need type =#+ST
                                  (sqlite . t)
                                  (js . t)
                                  (gnuplot . t)
-                                 (ditaa . t)))
+                                 (ditaa . t)
+                                 (plantuml . 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)
+  ;; toggle image preview 
+  (add-hook 'org-babel-after-execute-hook 'sd/display-inline-images 'append)
 
-  ;; 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))
+  (defun sd/display-inline-images ()
+    (condition-case nil
+        (org-display-inline-images)
+      (error nil)))
 
-  ;; Lua support
-  (use-package ob-lua
+  ;; ditaa artist mode
+  (with-eval-after-load "artist"
+    (define-key artist-mode-map [down-mouse-3] 'artist-mouse-choose-operation))
+#+END_SRC
+*** plantUML
+[[http://eschulte.github.io/babel-dev/DONE-integrate-plantuml-support.html][DONE-integrate-plantuml-support]]
+#+BEGIN_SRC sh
+  ## support plantuml
+  brew install plantuml
+#+END_SRC
+
+#+BEGIN_SRC emacs-lisp :tangle yes :results silent
+  (use-package plantuml-mode
     :ensure t)
+
+  (setq org-plantuml-jar-path
+        (expand-file-name "/usr/local/Cellar/plantuml/8041/plantuml.8041.jar"))
+
+  (set-variable 'plantuml-jar-path
+                (expand-file-name "/usr/local/Cellar/plantuml/8041/plantuml.8041.jar"))
 #+END_SRC
 
 ** Org-bullets
@@ -786,7 +821,14 @@ use [[https://github.com/sabof/org-bullets][org-bullets]] package to show utf-8
   (setq org-bullets-bullet-list '("⦿" "✪" "◉" "○" "►" "◆"))
 
   ;; increase font size when enter org-src-mode
-  (add-hook 'org-src-mode-hook (lambda () (text-scale-increase 2)))
+  ;; (add-hook 'org-src-mode-hook (lambda () (text-scale-increase 2)))
+
+  ;; define a face for org-bullets
+  (defface org-bullet-face
+      '((t (:foreground "green yellow")))
+  "Face used for the org-bullets.")
+  (setq org-bullets-face-name (quote  org-bullet-face))
+  (set-face-attribute 'org-bullet-face t :foreground "burlywood" :weight 'normal :height 1.6)
 #+END_SRC
 
 ** Worf Mode
@@ -1064,6 +1106,21 @@ Color higlight the source code block in exported html, [[http://stackoverflow.co
 ** Org structure template
 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
+  ;; ‘s’     ‘#+BEGIN_SRC ... #+END_SRC’
+  ;; ‘e’     ‘#+BEGIN_EXAMPLE ... #+END_EXAMPLE’
+  ;; ‘q’     ‘#+BEGIN_QUOTE ... #+END_QUOTE’
+  ;; ‘v’     ‘#+BEGIN_VERSE ... #+END_VERSE’
+  ;; ‘c’     ‘#+BEGIN_CENTER ... #+END_CENTER’
+  ;; ‘l’     ‘#+BEGIN_LaTeX ... #+END_LaTeX’
+  ;; ‘L’     ‘#+LaTeX:’
+  ;; ‘h’     ‘#+BEGIN_HTML ... #+END_HTML’
+  ;; ‘H’     ‘#+HTML:’
+  ;; ‘a’     ‘#+BEGIN_ASCII ... #+END_ASCII’
+  ;; ‘A’     ‘#+ASCII:’
+  ;; ‘i’     ‘#+INDEX:’ line
+  ;; ‘I’     ‘#+INCLUDE:’ line
+
+
   (add-to-list 'org-structure-template-alist
                '("E" "#+BEGIN_SRC emacs-lisp :tangle yes :results silent\n?\n#+END_SRC"))
   (add-to-list 'org-structure-template-alist
@@ -1080,6 +1137,15 @@ extend org-mode's easy templates, refer to [[http://coldnew.github.io/coldnew-em
                '("C" "#+BEGIN_SRC c :tangle ?\n\n#+END_SRC"))
   (add-to-list 'org-structure-template-alist
                '("m" "\\begin{equation}\n?\n\\end{equation}"))
+  (add-to-list 'org-structure-template-alist
+               '("b" "#+STARTUP: showall
+  ,#+STARTUP: inlineimages
+  ,#+OPTIONS: toc:nil\n"))
+  (add-to-list 'org-structure-template-alist
+               '("d" "#+BEGIN_SRC ditaa :file ?  :cmdline -r -s 0.8 :cache yes \n\n#+END_SRC"))
+  (add-to-list 'org-structure-template-alist
+               '("u" "#+BEGIN_SRC plantuml :file ? \n\n#+END_SRC"))
+
 #+END_SRC
 
 ** Org theme
@@ -1097,6 +1163,11 @@ extend org-mode's easy templates, refer to [[http://coldnew.github.io/coldnew-em
             (set-face-attribute face nil :inherit 'fixed-pitch))
           (list 'org-code 'org-block 'org-block-background))
     (set-face-attribute 'org-table nil :family "Ubuntu Mono" :height 140)
+    ;; org-special-keyword inherited from font-lock-keywork originally; as org is changed to variable-pitch, it cause
+    ;; the font in special-keywords are not monospace
+    (set-face-attribute 'org-special-keyword nil :inherit '(font-lock-keyword-face fixed-pitch))
+    ;; same as above 
+    (set-face-attribute 'org-verbatim nil :inherit '(shadow fixed-pitch))
     
     ;; fix indent broken by variable-pitch-mode
     ;; http://emacs.stackexchange.com/questions/26864/variable-pitch-face-breaking-indentation-in-org-mode
@@ -1146,11 +1217,10 @@ Refer to [[http://orgmode.org/worg/org-tutorials/org-publish-html-tutorial.html]
            :sitemap-filename "sitemap.org" ;... call it sitemap.org (it's the default )...
            :sitemap-title "Sitemap"
 
-           :table-of-contents nil
-           :html-postamble nil            ;dont export creator auto validation info in html postamble div
+           :html-table-of-contents nil
+           :html-postamble nil ;dont export creator auto validation info in html postamble div
            :html-link-home "/"
-           :html-head "<link rel='stylesheet' href='./css/worg_old.css' />"
-           ;; :html-head-extra ,my-blog-extra-head
+           :html-head "<link rel='stylesheet' href='./css/worg.css' />"
            :html-head-include-default-style nil
            :html-head-include-scripts nil)
           ("org-static"
@@ -1158,7 +1228,8 @@ Refer to [[http://orgmode.org/worg/org-tutorials/org-publish-html-tutorial.html]
            :base-extension "css\\|js\\|png\\|gif\\|pdf\\|mp3\\|ogg\\|swf"
            :publishing-directory "~/Private/publish_html"
            :recursive t
-           :publishing-function org-publish-attachment)
+           :publishing-function org-publish-attachment
+           :table-of-contents nil)
           ("org" :components ("org-notes" "org-static"))))
 #+END_SRC
 
@@ -1632,6 +1703,27 @@ as a http download client tool
                                   (car (last (split-string url "/" t))))))))))
 #+END_SRC
 
+** Elscreen
+Fix one elscreen issue when startup emacs https://github.com/knu/elscreen/issues/6
+#+BEGIN_SRC emacs-lisp :tangle yes :results silent
+  (use-package elscreen
+    :ensure t
+    :init
+    (setq elscreen-tab-display-control nil)
+    :config
+    (elscreen-start)
+    (set-face-attribute 'elscreen-tab-current-screen-face nil :foreground "black" :background "yellow")
+    (set-face-attribute 'elscreen-tab-other-screen-face nil :foreground "black" :background "disabledControlTextColor" :underline nil)
+    ;; (global-unset-key (kbd)); M-TAB switch screen
+    (global-set-key (kbd "s-`") '(lambda () (interactive) (elscreen-goto 0)))
+    (dotimes (i 8)
+      (global-set-key (kbd (concat "s-" (number-to-string (+ i 1))))
+                      `(lambda () (interactive) (elscreen-goto ,(+ i 1)))))
+    (global-set-key (kbd "s-t") 'elscreen-create)
+    (global-set-key (kbd "s-n") 'elscreen-next)
+    (global-set-key (kbd "s-p") 'elscreen-previous))
+#+END_SRC
+
 * Dired
 ** Dired bindings
 =C-o= is defined as a global key for window operation, here unset it in dired mode
@@ -1702,11 +1794,24 @@ as a http download client tool
 #+END_SRC
 
 #+BEGIN_SRC emacs-lisp :tangle yes :results silent
-  (defun sd/dired-new-file ()
+  (defun sd/dired-new-file-and-open ()
     "Create a new file in dired mode"
     (interactive)
     (call-interactively 'find-file))
 
+  (defun sd/dired-new-file (file)
+    "Create a new file called FILE.
+  If FILE already exists, signal an error."
+    (interactive
+     (list (read-file-name "Create file: " (dired-current-directory))))
+    (let* ((expanded (expand-file-name file)))
+      (if (file-exists-p expanded)
+          (error "Cannot create file %s: file exists" expanded))
+      (write-region "" nil expanded t)
+      (when expanded
+        (dired-add-file expanded)
+        (dired-move-to-filename))))
+
   ;; copied from abo-abo's config
   (defun sd/dired-get-size ()
     (interactive)
@@ -1727,7 +1832,8 @@ from [[https://emacs.stackexchange.com/questions/13713/how-to-disable-ido-in-dir
   (defun mk-anti-ido-advice (func &rest args)
     "Temporarily disable IDO and call function FUNC with arguments ARGS."
     (interactive)
-    (let ((read-file-name-function #'read-file-name-default))
+    (let ((read-file-name-function #'read-file-name-default)
+          (completing-read-function #'completing-read-default))
       (if (called-interactively-p 'any)
           (call-interactively func)
         (apply func args))))
@@ -1735,14 +1841,29 @@ from [[https://emacs.stackexchange.com/questions/13713/how-to-disable-ido-in-dir
   (defun mk-disable-ido (command)
     "Disable IDO when command COMMAND is called."
     (advice-add command :around #'mk-anti-ido-advice))
+
+  (defun mk-anti-ido-no-completing-advice (func &rest args)
+    "Temporarily disable IDO and call function FUNC with arguments ARGS."
+    (interactive)
+    (let ((read-file-name-function #'read-file-name-default)
+          ;; (completing-read-function #'completing-read-default)
+          )
+      (if (called-interactively-p 'any)
+          (call-interactively func)
+        (apply func args))))
+
+  (defun mk-disable-ido-no-completing (command)
+    "Disable IDO when command COMMAND is called."
+    (advice-add command :around #'mk-anti-ido-no-completing-advice))
 #+END_SRC
 
 Disalble =ido= when new a directory or file in =dired= mode
 #+BEGIN_SRC emacs-lisp :tangle yes :results silent
   ;; call the function which you want to disable ido
   (mk-disable-ido 'dired-create-directory)
+  (mk-disable-ido 'sd/dired-new-file-and-open)
   (mk-disable-ido 'sd/dired-new-file)
-  (mk-disable-ido 'dired-goto-file)
+  (mk-disable-ido-no-completing 'dired-goto-file)
 #+END_SRC
 
 ** Dired open with
@@ -2779,8 +2900,9 @@ Use =ESC= to exit minibuffer. Also I map =Super-h= the same as =C-g=
     :config
     (persp-mode)
     :bind
-    (:map projectile-mode-map
-          ("s-t" . projectile-persp-switch-project)))
+    ;; (:map projectile-mode-map
+    ;;       ("s-t" . projectile-persp-switch-project))
+    )
 
   ;; change default-directory of scratch buffer to projectile-project-root 
   (defun sd/project-switch-action ()
@@ -2807,71 +2929,16 @@ Use =ESC= to exit minibuffer. Also I map =Super-h= the same as =C-g=
   (global-set-key (kbd "<s-return>") 'toggle-frame-fullscreen)
 
   (global-set-key (kbd "s-f") 'projectile-find-file)
-  (global-set-key (kbd "s-`") 'mode-line-other-buffer)
+  ;; (global-set-key (kbd "s-`") 'mode-line-other-buffer)
 
-  (global-set-key (kbd "s-n") 'persp-next)
-  (global-set-key (kbd "s-p") 'persp-prev)
-  (global-set-key (kbd "s-;") 'persp-switch-last)
+  ;; (global-set-key (kbd "s-n") 'persp-next)
+  ;; (global-set-key (kbd "s-p") 'persp-prev)
+  ;; (global-set-key (kbd "s-;") 'persp-switch-last)
 
   (global-set-key (kbd "s-=") 'text-scale-increase)
   (global-set-key (kbd "s--") 'text-scale-decrease)
 
   ;; (global-set-key (kbd "s-u") 'undo-tree-visualize)
-
-
-  ;; someothers default mapping on super (command) key
-  ;; s-s save-buffer
-  ;; s-k kill-this-buffer
-
-
-  ;; s-h  -->  ns-do-hide-emacs
-  ;; s-j  -->  ido-switch-buffer  +
-  ;; s-k  -->  kill-this-buffer
-  ;; s-l  -->  goto-line
-  ;; s-;  -->  undefined
-  ;; s-'  -->  next-multiframe-window
-  ;; s-ret --> toggle-frame-fullscreen +
-
-  ;; s-y  -->  ns-paste-secondary
-  ;; s-u  -->  revert-buffer
-  ;; s-i  -->  undefined - but used for iterm globally
-  ;; s-o  -->  used for emacs globally
-  ;; s-p  -->  projectile-persp-switch-project  +  
-  ;; s-[  -->  next-buffer  +    
-  ;; s-]  -->  previous-buffer +
-
-  ;; s-0  -->  undefined
-  ;; s-9  -->  undefined
-  ;; s-8  -->  undefined
-  ;; s-7  -->  undefined
-  ;; s-6  -->  undefined
-  ;; s--  -->  center-line
-  ;; s-=  -->  undefined
-
-  ;; s-n  -->  make-frame
-  ;; s-m  -->  iconify-frame
-  ;; s-b  -->  undefined
-  ;; s-,  -->  customize
-  ;; s-.  -->  undefined
-  ;; s-/  -->  undefined
-
-  ;; s-g  -->  isearch-repeat-forward
-  ;; s-f  -->  projectile-find-file   +
-  ;; s-d  -->  isearch-repeat-background
-  ;; s-s  -->  save-buffer
-  ;; s-a  -->  make-whole-buffer
-
-  ;; s-b  -->  undefined
-  ;; s-v  -->  yank
-  ;; s-c  -->  ns-copy-including-secondary
-
-  ;; s-t  -->  ns-popup-font-panel
-  ;; s-r  -->  undefined
-  ;; s-e  -->  isearch-yanqk-kill
-  ;; s-w  -->  delete-frame
-  ;; s-q  -->  same-buffers-kill-emacs
-
-  ;; s-`  -->  other-frame
 #+END_SRC
 
 ** Windown & Buffer - =C-o=
@@ -2942,6 +3009,7 @@ Most use =C-o C-o= to switch buffers; =C-o x, v= to split window; =C-o o= to del
     ("C-b" ido-switch-buffer nil :exit t)
     ("C-f" projectile-find-file nil :exit t)
     ("C-p" persp-switch :exit t)
+    ("C-t" projectile-persp-switch-project nil :exit t)
 
     ;; other special buffers
     ("d" sd/project-or-dired-jump nil :exit t)
@@ -3419,3 +3487,9 @@ search music on some music web site
 
 
 
+** Need separate the Key-bindings and package-initialization
+* Note
+** Check if emacs is in terminal of graphic mode
+Use =display-graphic-p= instead of =window-system=
+[[info:elisp#Window%20Systems][Window Systems]]
+** =Interactive=