X-Git-Url: http://47.100.26.94:8080/?a=blobdiff_plain;f=emacs.d%2Fconfig.org;h=1b85b4bc0614f28f152e612bc075cba0a573c053;hb=4bbc4349e7156a609d2e707230708f4bdd2dbf76;hp=f1272c81c25278462be25c386c7f638cb26025c8;hpb=819b557f9ec286f3e9a86d120ac94b9472523ce2;p=dotfiles.git diff --git a/emacs.d/config.org b/emacs.d/config.org index f1272c8..1b85b4b 100644 --- a/emacs.d/config.org +++ b/emacs.d/config.org @@ -1443,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 @@ -1759,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" @@ -1772,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 @@ -1798,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 @@ -1816,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 @@ -1851,10 +1888,10 @@ irony-company (use-package yasnippet :ensure t :defer t - :config + :init (add-hook 'prog-mode-hook #'yas-minor-mode) - ;; (yas-global-mode 1) - ) + :config + (yas-reload-all)) #+END_SRC *** semantic @@ -1867,7 +1904,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