X-Git-Url: http://47.100.26.94:8080/?a=blobdiff_plain;f=emacs.d%2Fconfig.org;h=455ef2126077955cd1ff12e65d960f04555978eb;hb=9a66b3e20587e2ee46bf920d9e1217a2993dab33;hp=cb563f77a1bc2402734b0d374ce12d826434f15d;hpb=d2ec2b4d0940fae2293a88b66eb6c6e462247743;p=dotfiles.git diff --git a/emacs.d/config.org b/emacs.d/config.org index cb563f7..455ef21 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) @@ -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 @@ -679,28 +673,6 @@ Use [[https://github.com/DarwinAwardWinner/ido-ubiquitous][ido-ubiquitous]] for ;; (set-face-attribute 'ivy-current-match nil :background "Orange" :foreground "black") (define-key read-expression-map (kbd "C-r") 'counsel-expression-history) (global-set-key (kbd "C-c C-r") 'ivy-resume)) - - - - ;; (global-set-key "\C-s" 'swiper) - ;; (global-set-key (kbd "") 'ivy-resume) - ;; ;; (global-set-key (kbd "C-x C-f") 'counsel-find-file) - ;; (global-set-key (kbd " l") 'counsel-load-library) - ;; (global-set-key (kbd " i") 'counsel-info-lookup-symbol) - ;; (global-set-key (kbd " u") 'counsel-unicode-char) - ;; (global-set-key (kbd "C-c g") 'counsel-git) - ;; (global-set-key (kbd "C-c j") 'counsel-git-grep) - ;; (global-set-key (kbd "C-c k") 'counsel-ag) - ;; (global-set-key (kbd "C-x l") 'counsel-locate) - ;; (global-set-key (kbd "C-S-o") 'counsel-rhythmbox) - - ;; (set-face-attribute - ;; 'ivy-current-match nil - ;; :background "Orange" - ;; :foreground "black") - - ;; ivy-resume - ;; (define-key swiper-map (kbd "M-%") 'swiper-aa-replace) #+END_SRC ** helm @@ -732,11 +704,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 +744,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 +752,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 +799,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 @@ -798,7 +818,9 @@ cause we cannot input =[= and =]=, so here I unset this mappings. And redifined (use-package worf :ensure t :commands worf-mode - :init (add-hook 'org-mode-hook 'worf-mode)) + :init + (require 'ivy) + (add-hook 'org-mode-hook 'worf-mode)) #+END_SRC ** Get Things Done @@ -1064,6 +1086,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 +1117,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 +1143,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 @@ -1127,13 +1178,9 @@ Also correct the face of =org-meta-line= in =org-table= #+END_SRC ** Org Blog -Refer to [[http://orgmode.org/worg/org-tutorials/org-publish-html-tutorial.html][org-publish-html-tutorial]] +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) - ;; Refer https://ogbe.net/emacsconfig.html - (setq my-blog-extra-head - (concat - "")) (setq org-publish-project-alist `( @@ -1150,9 +1197,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 +1208,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 @@ -1576,6 +1625,23 @@ When see function by =C-h f=, and visit the source code, I would like the buffer (add-hook 'help-mode-hook 'sd/help-mode-hook) #+END_SRC +Wiki [[http://stackoverflow.com/questions/3480173/show-keys-in-emacs-keymap-value][show-keys-in-emacs-keymap-value]], Helpplus mode can show keymap as human-readable, use ~describe-keymap~ or =C-h M-k= + +#+BEGIN_SRC emacs-lisp :tangle yes :results silent + (el-get-bundle help-macro+ + :url "https://raw.githubusercontent.com/emacsmirror/emacswiki.org/master/help-macro+.el" + :features help-macro+) + (el-get-bundle help+ + :url "https://raw.githubusercontent.com/emacsmirror/emacswiki.org/master/help+.el" + :features help+) + (el-get-bundle help-fns+ + :url "https://raw.githubusercontent.com/emacsmirror/emacswiki.org/master/help-fns+.el" + :features help-fns+) + (el-get-bundle help-mode+ + :url "https://raw.githubusercontent.com/emacsmirror/emacswiki.org/master/help-mode+.el" + :features help-mode+) +#+END_SRC + ** goto-last-change #+BEGIN_SRC emacs-lisp :tangle yes :results silent (use-package goto-last-change @@ -1634,6 +1700,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 +1791,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 +1829,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 +1838,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 @@ -1841,6 +1957,7 @@ here on Mac, just use "open" commands to pen =.pdf=, =.html= and image files :config (define-key company-active-map (kbd "M-n") nil) (define-key company-active-map (kbd "M-p") nil) + (define-key company-active-map (kbd "SPC") #'sd/company-stop-input-space) (define-key company-active-map (kbd "C-n") #'company-select-next) (define-key company-active-map (kbd "C-p") #'company-select-previous) ;; should map both (kbd "TAB") and [tab],https://github.com/company-mode/company-mode/issues/75 @@ -1854,6 +1971,12 @@ here on Mac, just use "open" commands to pen =.pdf=, =.html= and image files :ensure t :config (company-statistics-mode)) + + (defun sd/company-stop-input-space () + "Stop completing and input a space,a workaround of a semantic issue `https://github.com/company-mode/company-mode/issues/614'" + (interactive) + (company-abort) + (insert " ")) #+END_SRC ** YASnippet @@ -1991,11 +2114,15 @@ bindings in =lispy-mode-map= after loaded. see [[http://stackoverflow.com/questi (use-package lispy :ensure t :init - (eval-after-load "lispy" - `(progn - (define-key lispy-mode-map (kbd "M-o") nil))) + (with-eval-after-load "lispy" + (define-key lispy-mode-map (kbd "M-o") nil) + (define-key lispy-mode-map (kbd "g") 'special-lispy-goto-local) + (define-key lispy-mode-map (kbd "G") 'special-lispy-goto) + (define-key lispy-mode-map (kbd "M-m") 'back-to-indentation)) :config (add-hook 'emacs-lisp-mode-hook (lambda () (lispy-mode 1)))) + + #+END_SRC ** Perl @@ -2781,8 +2908,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 +2937,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= @@ -2943,7 +3016,9 @@ Most use =C-o C-o= to switch buffers; =C-o x, v= to split window; =C-o o= to del ;; ("C-i" other-window nil :exit t) ("C-b" ido-switch-buffer nil :exit t) ("C-f" projectile-find-file nil :exit t) + ("C-r" ivy-recentf 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) @@ -3411,7 +3486,12 @@ Refer [[https://github.com/fnwiya/dotfiles/blob/c9ca79f1b22c919d9f4c3a0f944ba828 (global-set-key (kbd "C-w") 'sd/kill-region-or-backward-kill-word) #+END_SRC - +* Developing +** perspeen +#+BEGIN_SRC emacs-lisp :tangle yes :results silent + (el-get-bundle seudut/perspeen + :features perspeen) +#+END_SRC * TODO todolist ** Rucket ** player video on iphone for @@ -3421,3 +3501,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=