X-Git-Url: http://47.100.26.94:8080/?a=blobdiff_plain;f=emacs.d%2Fconfig.org;h=913aac481c3a823647c76b02927bec9191e8210f;hb=8d4ff93f0031b4e8b499e53bfd4679c67ccefad2;hp=07669c80d26898328f5324c94e857e8ef1fd5742;hpb=0c99977ea83e6748ff64d003a03c188343ed3df3;p=dotfiles.git diff --git a/emacs.d/config.org b/emacs.d/config.org index 07669c8..913aac4 100644 --- a/emacs.d/config.org +++ b/emacs.d/config.org @@ -8,29 +8,22 @@ Most config are just copied from [[https://github.com/howardabrams/dot-files][ho * Basic Settings ** Setting loading Path - Set system PATH and emacs exec path - #+BEGIN_SRC emacs-lisp :tangle yes :results silent - (setenv "PATH" (concat (getenv "PATH") ":" "/usr/local/bin" ":" "/Library/TeX/texbin")) (setq exec-path (append exec-path '("/usr/local/bin"))) (setq exec-path (append exec-path '("/Library/TeX/texbin/"))) - #+END_SRC Set the emacs load path - #+BEGIN_SRC emacs-lisp :tangle yes :results silent ;; (add-to-list 'load-path "~/.emacs.d/elisp") #+END_SRC ** Package Initialization - #+BEGIN_SRC emacs-lisp :tangle yes :results silent - (require 'package) (setq package-archives '(("mepla" . "http://melpa.milkbox.net/packages/") @@ -38,7 +31,6 @@ Set the emacs load path ("org" . "http://orgmode.org/elpa/"))) (package-initialize) - #+END_SRC ** General Setting @@ -108,8 +100,12 @@ Make a temp directory for all cache/history files (setq auto-save-list-file-prefix (concat sd-temp-directory "auto-save-list/.saves-")) #+END_SRC -* Package Management Tools +*** Max file size +#+BEGIN_SRC emacs-lisp :tangle yes :results silent + (setq large-file-warning-threshold nil) +#+END_SRC +* Package Management Tools ** Use-package Using [[https://github.com/jwiegley/use-package][use-package]] to manage emacs packages #+BEGIN_SRC emacs-lisp :tangle yes :results silent @@ -348,7 +344,6 @@ Enable rainbow mode in emacs lisp mode #+END_SRC * Mode-line - ** clean mode line clean mode line, Refer to [[https://www.masteringemacs.org/article/hiding-replacing-modeline-strings][Marstering Emacs]], some greek character see [[http://xahlee.info/math/math_unicode_greek.html][math_unicode_greek]] #+BEGIN_SRC emacs-lisp :tangle yes :results silent @@ -597,8 +592,8 @@ Use [[https://github.com/DarwinAwardWinner/ido-ubiquitous][ido-ubiquitous]] for (use-package ido-exit-target :ensure t :init - (mapcar (lambda (map) - (define-key map (kbd "C-j") #'ido-exit-target-split-window-right) + (mapcar '(lambda (map) + (define-key map (kbd "C-j") #'ido-exit-target-other-window) (define-key map (kbd "C-k") #'ido-exit-target-split-window-below)) (list ido-buffer-completion-map ;; ido-common-completion-map @@ -650,11 +645,8 @@ let helm windows split inside current window #+END_SRC * Org-mode Settings - ** Org-mode Basic setting - Always indents header, and hide header leading starts so that no need type =#+STATUP: indent= - #+BEGIN_SRC emacs-lisp :tangle yes :results silent (use-package org :ensure t @@ -665,7 +657,8 @@ Always indents header, and hide header leading starts so that no need type =#+ST (setq org-src-tab-acts-natively t) (setq org-confirm-babel-evaluate nil) (setq org-use-speed-commands t) - (setq org-completion-use-ido t)) + (setq org-completion-use-ido t) + (setq org-startup-with-inline-images t)) (org-babel-do-load-languages 'org-babel-load-languages @@ -676,6 +669,7 @@ Always indents header, and hide header leading starts so that no need type =#+ST (latex . t) (java . t) (ruby . t) + (lua . t) (lisp . t) (scheme . t) (sh . t) @@ -696,12 +690,14 @@ Always indents header, and hide header leading starts so that no need type =#+ST (unless (file-exists-p org-ditaa-jar-path) (error "seudut: ditaa.jar not found at %s " org-ditaa-jar-path)) + + ;; Lua support + (use-package ob-lua + :ensure t) #+END_SRC ** Org-bullets - use [[https://github.com/sabof/org-bullets][org-bullets]] package to show utf-8 charactes - #+BEGIN_SRC emacs-lisp :tangle yes :results silent (use-package org-bullets :ensure t @@ -717,34 +713,21 @@ use [[https://github.com/sabof/org-bullets][org-bullets]] package to show utf-8 #+END_SRC ** Worf Mode - [[https://github.com/abo-abo/worf][worf]] mode is an extension of vi-like binding for org-mode. In =worf-mode=, it is mapping =[=, =]= as =worf-backward= and =worf-forward= in global, wich cause we cannot input =[= and =]=, so here I unset this mappings. And redifined this two to =M-[= and =M-]=. see this [[https://github.com/abo-abo/worf/issues/19#issuecomment-223756599][issue]] - #+BEGIN_SRC emacs-lisp :tangle yes :results silent - (use-package worf :ensure t :commands worf-mode - :init (add-hook 'org-mode-hook 'worf-mode) - ;; :config - ;; (define-key worf-mode-map "[" nil) - ;; (define-key worf-mode-map "]" nil) - ;; (define-key worf-mode-map (kbd "M-[") 'worf-backward) - ;; (define-key worf-mode-map (kbd "M-]") 'worf-forward) - ) - + :init (add-hook 'org-mode-hook 'worf-mode)) #+END_SRC ** 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) @@ -752,9 +735,7 @@ standard key binding #+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 @@ -764,12 +745,9 @@ Replace the list bullet =-=, =+=, with =•=, a litter change based [[https://g #+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)") @@ -999,19 +977,19 @@ Install MacTex-basic [[http://www.tug.org/mactex/morepackages.html][MacTex-basic #+END_SRC -** others - +** 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 - - (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 - '("S" "#+BEGIN_SRC sh\n?\n#+END_SRC")) - (add-to-list 'org-structure-template-alist - '("p" "#+BEGIN_SRC plantuml :file uml.png \n?\n#+END_SRC")) - + (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 + '("S" "#+BEGIN_SRC sh :results output replace\n?\n#+END_SRC")) + (add-to-list 'org-structure-template-alist + '("p" "#+BEGIN_SRC plantuml :file uml.png \n?\n#+END_SRC")) + (add-to-list 'org-structure-template-alist + '("P" "#+BEGIN_SRC perl \n?\n#+END_SRC")) + (add-to-list 'org-structure-template-alist + '("f" "#+BEGIN_SRC fundamental :tangle ?\n\n#+END_SRC")) #+END_SRC * Magit @@ -1125,9 +1103,7 @@ Toggle an eshell in split window below, refer [[http://www.howardism.org/Technic (exec-path-from-shell-initialize)) #+END_SRC -** TODO smart display * Misc Settings - ** [[https://github.com/abo-abo/hydra][Hydra]] *** hydra install #+BEGIN_SRC emacs-lisp :tangle yes :results silent @@ -1265,68 +1241,50 @@ I like [[https://github.com/coldnew/linum-relative][linum-relative]], just like #+END_SRC ** Multi-term - #+BEGIN_SRC emacs-lisp :tangle yes :results silent - (use-package multi-term :ensure t) - #+END_SRC ** ace-link - [[https://github.com/abo-abo/ace-link][ace-link]] is a package written by [[https://github.com/abo-abo][Oleh Krehel]]. It is convenient to jump to link in help mode, info-mode, etc Type =o= to go to the link - #+BEGIN_SRC emacs-lisp :tangle yes :results silent - (use-package ace-link :ensure t :init (ace-link-setup-default)) - #+END_SRC ** Smart Parens - #+BEGIN_SRC emacs-lisp :tangle yes :results silent - (use-package smartparens :ensure t :config (progn (require 'smartparens-config) (add-hook 'prog-mode-hook 'smartparens-mode))) - #+END_SRC ** Ace-Windows - [[https://github.com/abo-abo/ace-window][ace-window]] - #+BEGIN_SRC emacs-lisp :tangle yes :results silent - (use-package ace-window :ensure t :defer t - ; :init - ; (global-set-key (kbd "M-o") 'ace-window) + ; :init + ; (global-set-key (kbd "M-o") 'ace-window) :config (setq aw-keys '(?a ?s ?d ?f ?j ?k ?l))) - #+END_SRC ** Which key - [[https://github.com/justbur/emacs-which-key][which-key]] show the key bindings - #+BEGIN_SRC emacs-lisp :tangle yes :results silent - (use-package which-key :ensure t :config (which-key-mode)) - #+END_SRC ** View only for some directory @@ -1384,9 +1342,6 @@ When see function by =C-h f=, and visit the source code, I would like the buffer (require 'info+)) #+END_SRC -** TODO bookmark - -** TODO Calendar ** advice info #+BEGIN_SRC emacs-lisp :tangle yes :results silent (defun sd/info-mode () @@ -1408,9 +1363,6 @@ When see function by =C-h f=, and visit the source code, I would like the buffer (sd/delete-current-window)) #+END_SRC -** TODO Man mode -Color for Man-mode - ** Demo It #+BEGIN_SRC emacs-lisp :tangle yes :results silent ;; (el-get-bundle howardabrams/demo-it) @@ -1474,6 +1426,36 @@ Color for Man-mode (add-hook 'help-mode-hook 'sd/help-mode-hook) #+END_SRC +** goto-last-change +#+BEGIN_SRC emacs-lisp :tangle yes :results silent + (use-package goto-last-change + :ensure t) +#+END_SRC + +** Ag +install =ag=, =the-silver-searcher= by homebrew on mac +#+BEGIN_SRC sh +brew install the-silver-searcher +#+END_SRC + +#+BEGIN_SRC emacs-lisp :tangle yes :results silent + (use-package ag + :ensure t) +#+END_SRC + +** Local Variable hooks +[[https://www.emacswiki.org/emacs/LocalVariables][LocalVariables]], use =hack-local-variables-hook=, run a hook to set local variable in mode hook +#+BEGIN_SRC emacs-lisp :tangle yes :results silent + ;; make Emacs run a new "local variables hook" for each major mode + (add-hook 'hack-local-variables-hook 'run-local-vars-mode-hook) + + (defun run-local-vars-mode-hook () + "Run a hook for the major-mode after the local variables have been processed." + (run-hooks (intern (concat (symbol-name major-mode) "-local-vars-hook")))) + + ;; (add-hook 'c++-mode-local-vars-hook #'sd/c++-mode-local-vars) +#+END_SRC + * Dired ** Dired bindings =C-o= is defined as a global key for window operation, here unset it in dired mode @@ -1534,7 +1516,7 @@ Color for Man-mode (interactive) (dired-why) (message - "Δ: d-delete, u-ndelete, x-punge, f-ind, o-ther window, R-ename, C-opy, c-create, +new dir, r-evert, /-filter, h-summary, ?-help")) + "Δ: d-delete, u-ndelete, x-punge, f-ind, o-ther window, R-ename, C-opy, c-create, +new dir, r-evert, /-filter, v-iew, l-ist, z-Size, h-summary, ?-help")) (defun sd/dired-high-level-dir () "Go to higher level directory" @@ -1790,6 +1772,10 @@ to call =compilation= interactively. #+END_SRC ** C & C++ +C/C++ ide tools +1. completion (file name, function name, variable name) +2. template yasnippet (keywords, if, function) +3. tags jump *** c/c++ style #+BEGIN_SRC emacs-lisp :tangle yes :results silent (setq c-default-style "stroustrup" @@ -1803,15 +1789,7 @@ to call =compilation= interactively. #+END_SRC *** irony -#+BEGIN_SRC emacs-lisp :tangle yes :results silent - (use-package irony - :ensure t - :config - (add-hook 'c++-mode-hook 'irony-mode) - (add-hook 'c-mode-hook 'irony-mode) - (add-hook 'objc-mode-hook 'irony-mode)) -#+END_SRC - +**** install irony server Install clang, on mac, it has =libclang.dylib=, but no develop headers. Install by =brew= #+BEGIN_SRC sh brew install llvm --with-clang @@ -1829,17 +1807,38 @@ then install irony searver, and =LIBCLANG_LIBRARY= and =LIBCLANG_INCLUDE_DIR= ac /Users/peli3/.emacs.d/elpa/irony-20160713.1245/server && cmake --build . --use-stderr --config Release --target install #+END_SRC +**** irony config irony-mode-hook, copied from [[https://github.com/Sarcasm/irony-mode][irony-mode]] github #+BEGIN_SRC emacs-lisp :tangle yes :results silent + (use-package irony + :ensure t + :config + (add-hook 'c++-mode-hook 'irony-mode) + (add-hook 'c-mode-hook 'irony-mode) + (add-hook 'objc-mode-hook 'irony-mode)) + ;; replace the `completion-at-point' and `complete-symbol' bindings in ;; irony-mode's buffers by irony-mode's function + (defun my-irony-mode-hook () (define-key irony-mode-map [remap completion-at-point] 'irony-completion-at-point-async) (define-key irony-mode-map [remap complete-symbol] 'irony-completion-at-point-async)) + (add-hook 'irony-mode-hook 'my-irony-mode-hook) (add-hook 'irony-mode-hook 'irony-cdb-autosetup-compile-options) + + (add-hook 'c++-mode-local-vars-hook #'sd/c++-mode-local-vars) + + ;; add C++ completions, because by default c++ file can not complete + ;; c++ std functions, another method is create .dir-local.el file, for p + ;; for project see irony + (defun sd/c++-mode-local-vars () + (setq irony--compile-options + '("-std=c++11" + "-stdlib=libc++" + "-I/usr/include/c++/4.2.1"))) #+END_SRC irony-company @@ -1847,14 +1846,21 @@ irony-company (use-package company-irony :ensure t) - (eval-after-load 'company - '(add-to-list 'company-backends 'company-irony)) - (use-package flycheck-irony :ensure t) - (eval-after-load 'flycheck - '(add-hook 'flycheck-mode-hook #'flycheck-irony-setup)) + (use-package company-c-headers + :ensure t + :config + (add-to-list 'company-c-headers-path-system "/usr/include/c++/4.2.1/")) + + (with-eval-after-load 'company + (add-to-list 'company-backends 'company-irony) + (add-to-list 'company-backends 'company-c-headers)) + + + (with-eval-after-load 'flycheck + (add-hook 'flycheck-mode-hook #'flycheck-irony-setup)) #+END_SRC *** gtags @@ -1880,7 +1886,14 @@ irony-company *** yasnippet #+BEGIN_SRC emacs-lisp :tangle yes :results silent (use-package yasnippet - :ensure t) + :ensure t + :defer t + ;; :config + ) + ;; (yas-reload-all) + ;; (add-hook 'prog-mode-hook #'yas-minor-mode) + ;; (yas-global-mode 1) + #+END_SRC *** semantic @@ -1893,7 +1906,14 @@ irony-company (use-package google-c-style :ensure t :config - (add-hook 'c-mode-hook 'google-set-c-style)) + (add-hook 'c-mode-hook 'google-set-c-style) + (add-hook 'c++-mode-hook 'google-set-c-style)) +#+END_SRC + +** Lua +#+BEGIN_SRC emacs-lisp :tangle yes :results silent + (use-package lua-mode + :ensure t) #+END_SRC * Compile @@ -2195,6 +2215,11 @@ See [[https://www.emacswiki.org/emacs/GnusWindowLayout][GnusWindowLayout]] #+END_SRC * Gnu Plot +Install =gnuplot= on Mac +#+BEGIN_SRC sh + brew install gnuplot --with-qt +#+END_SRC + To fix some issue that =toolbar-make-button-list= is void, see the [[https://github.com/bruceravel/gnuplot-mode/issues/31][issue]], here I set some variable as =nil= #+BEGIN_SRC emacs-lisp :tangle yes :results silent (use-package gnuplot @@ -2450,15 +2475,18 @@ Most use =C-o C-o= to switch buffers; =C-o x, v= to split window; =C-o o= to del (defhydra sd/hydra-window (:color red :columns nil) "Window" - ;; windows split + ;; windows switch ("h" windmove-left nil :exit t) ("j" windmove-down nil :exit t) ("k" windmove-up nil :exit t) ("l" windmove-right nil :exit t) + ("C-o" other-window nil :exit t) + ;; window resize ("H" hydra-move-splitter-left nil) ("J" hydra-move-splitter-down nil) ("K" hydra-move-splitter-up nil) ("L" hydra-move-splitter-right nil) + ;; windows split ("v" (lambda () (interactive) (split-window-right) @@ -2469,33 +2497,39 @@ Most use =C-o C-o= to switch buffers; =C-o x, v= to split window; =C-o o= to del (split-window-below) (windmove-down)) "horz" :exit t) - ;; buffer / windows switch ("o" sd/toggle-max-windows "one" :exit t) ("C-k" sd/delete-current-window "del" :exit t) - ("D" (lambda () + ("C-d" (lambda () (interactive) (kill-buffer) (sd/delete-current-window)) "kill" :exit t) - ("'" other-window "other" :exit t) + + ;; ace-window + ;; ("'" 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) - + ;; Windows undo - redo ("u" (progn (winner-undo) (setq this-command 'winner-undo)) "undo") ("r" (progn (winner-redo) (setq this-command 'winner-redo)) "redo") - + ;; ibuffer, dired, eshell, bookmarks - ;; ("d" ace-delete-window "ace-one" :exit t) - ("C-o" ido-switch-buffer nil :exit t) + ;; ("C-i" other-window nil :exit t) + ("C-b" ido-switch-buffer nil :exit t) + ("C-f" projectile-find-file nil :exit t) + ("C-p" persp-switch :exit t) + + ;; other special buffers ("d" sd/project-or-dired-jump nil :exit t) ("b" ibuffer nil :exit t) ("e" sd/toggle-project-eshell nil :exit t) ("m" bookmark-jump-other-window nil :exit t) ("M" bookmark-set nil :exit t) ("g" magit-status nil :exit t) - ("p" paradox-list-packages nil :exit t) + ;; ("p" paradox-list-packages nil :exit t) ;; quit ("q" nil "cancel") @@ -2941,9 +2975,9 @@ stolen from [[https://github.com/mariolong/emacs.d/blob/f6a061594ef1b5d1f4750e9d - vision - mission -* TODO jump last change point - * TODO todolist ** rucket ** player video on iphone for ** SICP +** music searcher +search music on some music web site