X-Git-Url: http://47.100.26.94:8080/?a=blobdiff_plain;f=emacs.d%2Fconfig.org;h=5b2410857acbbe155b5f00dc782170977e58d5f6;hb=b19729eca7c8966d69f4d91da52e1c72bcd818a7;hp=d39bf9389b12475a1472d98c9ed134c30f5a47d3;hpb=a8043dcecdac7304d94028a5123c5e64e3352dc1;p=dotfiles.git diff --git a/emacs.d/config.org b/emacs.d/config.org index d39bf93..5b24108 100644 --- a/emacs.d/config.org +++ b/emacs.d/config.org @@ -144,13 +144,12 @@ Check out [[http://tapoueh.org/emacs/el-get.html][el-get]]. #+END_SRC * 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 @@ -1241,9 +1240,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 @@ -1460,6 +1470,7 @@ brew install the-silver-searcher #+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 @@ -1655,13 +1666,21 @@ here on Mac, just use "open" commands to pen =.pdf=, =.html= and image files #+END_SRC * Completion -company mode and company-statistics +** company mode and company-statistics #+BEGIN_SRC emacs-lisp :tangle yes :results silent (use-package company :ensure t :diminish company-mode :init (setq company-idle-delay 0.1) + (setq company-selection-wrap-around t) :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 "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 + (define-key company-active-map (kbd "TAB") #'company-complete-selection) + (define-key company-active-map [tab] #'company-complete-selection) (global-company-mode)) (use-package company-statistics @@ -1670,6 +1689,116 @@ company mode and company-statistics (company-statistics-mode)) #+END_SRC +** YASnippet +*** 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 + + +** company and yasnippet +Add yasnippet as the company candidates +#+BEGIN_SRC emacs-lisp :tangle yes :results silent + ;Add yasnippet support for all company backends + ;https://github.com/syl20bnr/spacemacs/pull/179 + (defvar company-mode/enable-yas t + "Enable yasnippet for all backends.") + + (defun company-mode/backend-with-yas (backend) + (if (or (not company-mode/enable-yas) (and (listp backend) (member 'company-yasnippet backend))) + backend + (append (if (consp backend) backend (list backend)) + '(:with company-yasnippet)))) + + (setq company-backends (mapcar #'company-mode/backend-with-yas company-backends)) +#+END_SRC + +Refer, [[http://emacs.stackexchange.com/questions/7908/how-to-make-yasnippet-and-company-work-nicer][how-to-make-yasnippet-and-company-work-nicer]] +#+BEGIN_SRC emacs-lisp :tangle yes :results silent + (defun check-expansion () + (save-excursion + (if (looking-at "\\_>") t + (backward-char 1) + (if (looking-at "\\.") t + (backward-char 1) + (if (looking-at "->") t nil))))) + + (defun do-yas-expand () + (let ((yas/fallback-behavior 'return-nil)) + (yas/expand))) + + (defun tab-indent-or-complete () + (interactive) + (cond + ((minibufferp) + (minibuffer-complete)) + (t + (indent-for-tab-command) + (if (or (not yas/minor-mode) + (null (do-yas-expand))) + (if (check-expansion) + (progn + (company-manual-begin) + (if (null company-candidates) + (progn + (company-abort) + (indent-for-tab-command))))))))) + + (defun tab-complete-or-next-field () + (interactive) + (if (or (not yas/minor-mode) + (null (do-yas-expand))) + (if company-candidates + (company-complete-selection) + (if (check-expansion) + (progn + (company-manual-begin) + (if (null company-candidates) + (progn + (company-abort) + (yas-next-field)))) + (yas-next-field))))) + + (defun expand-snippet-or-complete-selection () + (interactive) + (if (or (not yas/minor-mode) + (null (do-yas-expand)) + (company-abort)) + (company-complete-selection))) + + (defun abort-company-or-yas () + (interactive) + (if (null company-candidates) + (yas-abort-snippet) + (company-abort))) + + ' + ;; (require 'company) + ;; (require 'yasnippet) + + + ;; (global-set-key [tab] 'tab-indent-or-complete) + ;; (global-set-key (kbd "TAB") 'tab-indent-or-complete) + ;; (global-set-key [(control return)] 'company-complete-common) + + ;; (define-key company-active-map [tab] 'expand-snippet-or-complete-selection) + ;; (define-key company-active-map (kbd "TAB") 'expand-snippet-or-complete-selection) + + ;; (define-key yas-minor-mode-map [tab] nil) + ;; (define-key yas-minor-mode-map (kbd "TAB") nil) + + ;; (define-key yas-keymap [tab] 'tab-complete-or-next-field) + ;; (define-key yas-keymap (kbd "TAB") 'tab-complete-or-next-field) + ;; (define-key yas-keymap [(control tab)] 'yas-next-field) + ;; (define-key yas-keymap (kbd "C-g") 'abort-company-or-yas) +#+END_SRC + * Libs #+BEGIN_SRC emacs-lisp :tangle yes :results silent (use-package s @@ -1792,6 +1921,9 @@ C/C++ ide tools (list c-mode-map c++-mode-map objc-mode-map)) + + ;; objective c + (add-to-list 'auto-mode-alist '("\\.mm\\'" . objc-mode)) #+END_SRC *** irony @@ -1860,10 +1992,13 @@ irony-company :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 'company + ;; (add-to-list 'company-backends 'company-irony) + ;; (add-to-list 'company-backends 'company-c-headers)) + (with-eval-after-load 'company + (push '(company-irony :with company-yasnippet) company-backends) + (push '(company-c-headers :with company-yasnippet) company-backends)) (with-eval-after-load 'flycheck (add-hook 'flycheck-mode-hook #'flycheck-irony-setup)) @@ -1875,17 +2010,6 @@ irony-company :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 @@ -1913,7 +2037,6 @@ irony-company (global-semantic-idle-scheduler-mode 1) (semantic-mode 1) - #+END_SRC *** google C style @@ -1948,6 +2071,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 @@ -2540,6 +2665,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) @@ -2985,6 +3111,18 @@ stolen from [[https://github.com/mariolong/emacs.d/blob/f6a061594ef1b5d1f4750e9d #+END_SRC *** TODO make expand-region hydra work with lispy selected +** =C-w= delete backward word +Refer [[https://github.com/fnwiya/dotfiles/blob/c9ca79f1b22c919d9f4c3a0f944ba8281255a594/setup/.emacs.d/loader-init/_90-kill-region-or-backward-kill-word.el][kill-region-or-backward-kill-word]] +#+BEGIN_SRC emacs-lisp :tangle yes :results silent + (defun sd/kill-region-or-backward-kill-word () + (interactive) + (if (region-active-p) + (kill-region (point) (mark)) + (backward-kill-word 1))) + + (global-set-key (kbd "C-w") 'sd/kill-region-or-backward-kill-word) +#+END_SRC + * key - passion - vision