X-Git-Url: http://47.100.26.94:8080/?a=blobdiff_plain;f=emacs.d%2Fconfig.org;h=b91cb717040a41b8fcefa7a57ea8035cd05cd045;hb=74994554fe50518e50056dbcff7d0d8f3fbba7e2;hp=247fd54ca9aeac19db1182cc74a9c53cd361bf41;hpb=31f6d66e9fa6f0f219c3c369510e3eb5c755377e;p=dotfiles.git diff --git a/emacs.d/config.org b/emacs.d/config.org index 247fd54..b91cb71 100644 --- a/emacs.d/config.org +++ b/emacs.d/config.org @@ -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) @@ -406,7 +406,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 +584,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 +735,34 @@ 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)) +#+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) @@ -753,24 +779,36 @@ 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 + +#+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 +824,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 @@ -1080,6 +1125,11 @@ 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")) #+END_SRC ** Org theme @@ -1097,6 +1147,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 @@ -1128,12 +1183,8 @@ Also correct the face of =org-meta-line= in =org-table= ** Org Blog Refer to [[http://orgmode.org/worg/org-tutorials/org-publish-html-tutorial.html][org-publish-html-tutorial]], and [[https://ogbe.net/blog/blogging_with_org.html][blogging_with_org]] - #+BEGIN_SRC emacs-lisp :tangle yes :results silent (require 'ox-publish) - (setq my-blog-extra-head - (concat - "")) (setq org-publish-project-alist `( @@ -1150,9 +1201,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" + :html-table-of-contents nil + :html-postamble nil ;dont export creator auto validation info in html postamble div :html-link-home "/" - :html-head nil ; - :html-head-extra ,my-blog-extra-head + :html-head "" :html-head-include-default-style nil :html-head-include-scripts nil) ("org-static" @@ -1160,7 +1212,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 @@ -1634,6 +1687,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 @@ -1704,11 +1778,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) @@ -1729,7 +1816,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)))) @@ -1737,14 +1825,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 @@ -2781,8 +2884,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 () @@ -2809,71 +2913,16 @@ Use =ESC= to exit minibuffer. Also I map =Super-h= the same as =C-g= (global-set-key (kbd "") '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= @@ -2944,6 +2993,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) @@ -3421,3 +3471,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=