X-Git-Url: http://47.100.26.94:8080/?a=blobdiff_plain;f=emacs.d%2Fconfig.org;h=336ab8959b41c9424a6bd4d942474fec0e203208;hb=44336abcab1181d18f9d45430cc93d68e7f31bc8;hp=d1b099a71a9916cdf7850e83066e3c3cb333346e;hpb=166668ed684ff7f2f9e1ddbcf83a8edcf7c06e44;p=dotfiles.git diff --git a/emacs.d/config.org b/emacs.d/config.org index d1b099a..336ab89 100644 --- a/emacs.d/config.org +++ b/emacs.d/config.org @@ -146,11 +146,11 @@ Check out [[http://tapoueh.org/emacs/el-get.html][el-get]]. * Color and Fonts Settings ** highlight current line - #+BEGIN_SRC emacs-lisp :tangle yes :results silent - - (global-hl-line-mode) - + ;; (global-hl-line-mode) + ;; don't want high light current line in eshell/term mode + (add-hook 'prog-mode-hook 'hl-line-mode) + (add-hook 'text-mode-hook 'hl-line-mode) #+END_SRC ** Smart Comments @@ -349,7 +349,6 @@ clean mode line, Refer to [[https://www.masteringemacs.org/article/hiding-replac #+BEGIN_SRC emacs-lisp :tangle yes :results silent (defvar mode-line-cleaner-alist `((auto-complete-mode . " α") - (yas/minor-mode . " υ") (paredit-mode . " π") (eldoc-mode . "") (abbrev-mode . "") @@ -370,6 +369,7 @@ clean mode line, Refer to [[https://www.masteringemacs.org/article/hiding-replac (flyspell-mode . "") (irony-mode . "") (page-break-lines-mode . "") + (yas-minor-mode . "y") ;; Major modes (lisp-interaction-mode . "λ") (hi-lock-mode . "") @@ -1241,9 +1241,20 @@ I like [[https://github.com/coldnew/linum-relative][linum-relative]], just like #+END_SRC ** Multi-term +define =multi-term= mapping to disable some mapping which is used globally. #+BEGIN_SRC emacs-lisp :tangle yes :results silent (use-package multi-term :ensure t) + + (defun sd/term-mode-mapping () + (mapcar (lambda (map) + (define-key map (kbd "C-o") nil) + (define-key map (kbd "C-g") nil)) + (list term-mode-map + term-raw-map))) + + (with-eval-after-load 'multi-term + (sd/term-mode-mapping)) #+END_SRC ** ace-link @@ -1443,6 +1454,24 @@ 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 + +** Table +#+BEGIN_SRC emacs-lisp :tangle yes :results silent + (add-hook 'text-mode-hook 'table-recognize) +#+END_SRC + * Dired ** Dired bindings =C-o= is defined as a global key for window operation, here unset it in dired mode @@ -1759,16 +1788,22 @@ 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" c-basic-offset 4) -#+END_SRC -*** flycheck -#+BEGIN_SRC emacs-lisp :tangle yes :results silent - (use-package flycheck - :ensure t) + ;; "C-M-j" is my global binding for avy goto line below + ;; disable it in c mode + (mapcar '(lambda (map) + (define-key map (kbd "C-M-j") nil)) + (list c-mode-map + c++-mode-map + objc-mode-map)) #+END_SRC *** irony @@ -1808,8 +1843,20 @@ irony-mode-hook, copied from [[https://github.com/Sarcasm/irony-mode][irony-mode '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 @@ -1821,20 +1868,50 @@ irony-company :ensure t) (use-package company-c-headers - :ensure t) + :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 company-c-headers))) + (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 +*** flycheck +#+BEGIN_SRC emacs-lisp :tangle yes :results silent + (use-package flycheck + :ensure t) +#+END_SRC + +*** yasnippet +#+BEGIN_SRC emacs-lisp :tangle yes :results silent + (use-package yasnippet + :ensure t + :defer t + :init + (add-hook 'prog-mode-hook #'yas-minor-mode) + :config + (yas-reload-all)) +#+END_SRC + *** gtags #+BEGIN_SRC emacs-lisp :tangle yes :results silent (use-package ggtags - :ensure t) + :ensure t + :config + (define-key ggtags-mode-map (kbd "M-g d") 'ggtags-find-definition) + (define-key ggtags-mode-map (kbd "M-g r") 'ggtags-find-reference) + (define-key ggtags-mode-map (kbd "M-g r") 'ggtags-find-reference) + (define-key ggtags-mode-map (kbd "C-c g s") 'ggtags-find-other-symbol) + (define-key ggtags-mode-map (kbd "C-c g h") 'ggtags-view-tag-history) + (define-key ggtags-mode-map (kbd "C-c g r") 'ggtags-find-reference) + (define-key ggtags-mode-map (kbd "C-c g f") 'ggtags-find-file) + (define-key ggtags-mode-map (kbd "C-c g c") 'ggtags-create-tags) + (define-key ggtags-mode-map (kbd "C-c g u") 'ggtags-update-tags)) (add-hook 'c-mode-common-hook (lambda () @@ -1851,24 +1928,6 @@ irony-company #+END_SRC -*** yasnippet -#+BEGIN_SRC emacs-lisp :tangle yes :results silent - (use-package yasnippet - :ensure t - :defer t - ;; :config - ) - ;; (yas-reload-all) - ;; (add-hook 'prog-mode-hook #'yas-minor-mode) - ;; (yas-global-mode 1) - -#+END_SRC - -*** semantic -#+BEGIN_SRC emacs-lisp :tangle yes :results silent - -#+END_SRC - *** google C style #+BEGIN_SRC emacs-lisp :tangle yes :results silent (use-package google-c-style @@ -1901,6 +1960,8 @@ Set the environments vairables in compilation mode (define-key compilation-mode-map (kbd "n") 'compilation-next-error) (define-key compilation-mode-map (kbd "p") 'compilation-previous-error) (define-key compilation-mode-map (kbd "r") #'recompile)) + + (global-set-key (kbd "s-r") 'compile) #+END_SRC * Auto-Insert @@ -2493,6 +2554,7 @@ Most use =C-o C-o= to switch buffers; =C-o x, v= to split window; =C-o o= to del ;; other special buffers ("d" sd/project-or-dired-jump nil :exit t) ("b" ibuffer nil :exit t) + ("t" multi-term 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)