X-Git-Url: http://47.100.26.94:8080/?a=blobdiff_plain;f=emacs.d%2Fconfig.org;h=913aac481c3a823647c76b02927bec9191e8210f;hb=8d4ff93f0031b4e8b499e53bfd4679c67ccefad2;hp=f412f50e634dcd228a7b81173578ff2c8bf58ede;hpb=d1ceb4019d3475290dbe73968fa0c926175970ae;p=dotfiles.git diff --git a/emacs.d/config.org b/emacs.d/config.org index f412f50..913aac4 100644 --- a/emacs.d/config.org +++ b/emacs.d/config.org @@ -1104,7 +1104,6 @@ Toggle an eshell in split window below, refer [[http://www.howardism.org/Technic #+END_SRC * Misc Settings - ** [[https://github.com/abo-abo/hydra][Hydra]] *** hydra install #+BEGIN_SRC emacs-lisp :tangle yes :results silent @@ -1444,6 +1443,19 @@ brew install the-silver-searcher :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 @@ -1760,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" @@ -1773,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 @@ -1799,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 @@ -1817,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 @@ -1850,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 @@ -1863,7 +1906,8 @@ 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