X-Git-Url: http://47.100.26.94:8080/?a=blobdiff_plain;f=emacs.d%2Fconfig.org;h=b9c0209354016c6c7b34cd2ea56105bfe85f2eb0;hb=6e6b4ae1dae6518a03eaa503382b110f2cc1ca00;hp=913aac481c3a823647c76b02927bec9191e8210f;hpb=8d4ff93f0031b4e8b499e53bfd4679c67ccefad2;p=dotfiles.git diff --git a/emacs.d/config.org b/emacs.d/config.org index 913aac4..b9c0209 100644 --- a/emacs.d/config.org +++ b/emacs.d/config.org @@ -47,6 +47,9 @@ Set the emacs load path (show-paren-mode 1) ;; don't backupf (setq make-backup-files nil) + + ;;supress the redefined warning at startup + (setq ad-redefinition-action 'accept) #+END_SRC *** Custom file @@ -144,13 +147,13 @@ 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) + (add-hook 'dired-mode-hook 'hl-line-mode) #+END_SRC ** Smart Comments @@ -166,39 +169,29 @@ Check out [[http://tapoueh.org/emacs/el-get.html][el-get]]. #+END_SRC ** Font Setting - syntax highlighting - #+BEGIN_SRC emacs-lisp :tangle yes :results silent - (global-font-lock-mode 1) - #+END_SRC [[https://github.com/i-tu/Hasklig][Hasklig]] and Source Code Pro, defined fonts family - #+BEGIN_SRC emacs-lisp :tangle yes :results silent - (if window-system (defvar sd/fixed-font-family (cond ((x-list-fonts "Hasklig") "Hasklig") - ((x-list-fonts "Source Code Pro") "Source Code Pro:weight:light") + ((x-list-fonts "Source Code Pro") "Source Code Pro:weight") ((x-list-fonts "Anonymous Pro") "Anonymous Pro") ((x-list-fonts "M+ 1mn") "M+ 1mn")) "The fixed width font based on what is installed, `nil' if not defined.")) - #+END_SRC Setting the fonts - #+BEGIN_SRC emacs-lisp :tangle yes :results silent - (if window-system (when sd/fixed-font-family (set-frame-font sd/fixed-font-family) (set-face-attribute 'default nil :font sd/fixed-font-family :height 130) (set-face-font 'default sd/fixed-font-family))) - #+END_SRC ** Color Theme @@ -206,7 +199,6 @@ Setting the fonts Loading theme should be after all required loaded, refere [[https://github.com/jwiegley/use-package][:defer]] in =use-package= #+BEGIN_SRC emacs-lisp :tangle yes :results silent - (setq vc-follow-symlinks t) (use-package color-theme @@ -216,7 +208,9 @@ Loading theme should be after all required loaded, refere [[https://github.com/j :ensure t :no-require t :config - (load-theme 'sanityinc-tomorrow-bright t))) + ;; (load-theme 'sanityinc-tomorrow-bright t) + (load-theme 'molokai t) + )) ;(eval-after-load 'color-theme ; (load-theme 'sanityinc-tomorrow-bright t)) @@ -343,13 +337,17 @@ Enable rainbow mode in emacs lisp mode #+END_SRC +** cusor color +#+BEGIN_SRC emacs-lisp :tangle yes :results silent + (set-cursor-color 'red) +#+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 (defvar mode-line-cleaner-alist `((auto-complete-mode . " α") - (yas/minor-mode . " υ") (paredit-mode . " π") (eldoc-mode . "") (abbrev-mode . "") @@ -370,6 +368,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 . "") @@ -592,7 +591,7 @@ Use [[https://github.com/DarwinAwardWinner/ido-ubiquitous][ido-ubiquitous]] for (use-package ido-exit-target :ensure t :init - (mapcar '(lambda (map) + (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 @@ -1209,9 +1208,10 @@ Fix the font size of line number I like [[https://github.com/coldnew/linum-relative][linum-relative]], just like the =set relativenumber= on =vim= #+BEGIN_SRC emacs-lisp :tangle yes :results silent - (use-package linum-relative :ensure t + :init + (setq linum-relative-current-symbol "") :config (defun linum-new-mode () "If line numbers aren't displayed, then display them. @@ -1226,7 +1226,6 @@ I like [[https://github.com/coldnew/linum-relative][linum-relative]], just like ;; auto enable linum-new-mode in programming modes (add-hook 'prog-mode-hook 'linum-relative-mode) - #+END_SRC ** Save File Position @@ -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 @@ -1456,6 +1466,11 @@ brew install the-silver-searcher ;; (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 @@ -1495,7 +1510,8 @@ brew install the-silver-searcher (define-key dired-mode-map (kbd "TAB") 'diredp-next-subdir) (define-key dired-mode-map (kbd "K") 'diredp-prev-subdir) (define-key dired-mode-map (kbd "O") 'dired-display-file) - (define-key dired-mode-map (kbd "I") 'other-window)) + (define-key dired-mode-map (kbd "I") 'other-window) + (define-key dired-mode-map (kbd "o") 'other-window)) (use-package dired :config @@ -1651,14 +1667,23 @@ 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 - (global-company-mode)) + (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) + (setq company-global-modes '(not org-mode))) (use-package company-statistics :ensure t @@ -1666,6 +1691,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 @@ -1780,12 +1915,17 @@ C/C++ ide tools #+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)) + + ;; objective c + (add-to-list 'auto-mode-alist '("\\.mm\\'" . objc-mode)) #+END_SRC *** irony @@ -1854,19 +1994,38 @@ 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)) #+END_SRC +*** flycheck +#+BEGIN_SRC emacs-lisp :tangle yes :results silent + (use-package flycheck + :ensure t) +#+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 () @@ -1880,25 +2039,6 @@ irony-company (global-semantic-idle-scheduler-mode 1) (semantic-mode 1) - -#+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 @@ -1916,6 +2056,42 @@ irony-company :ensure t) #+END_SRC +** Scheme +Install =guile=, =guile= is an implementation of =Scheme= programming language. +#+BEGIN_SRC sh + brew install guile +#+END_SRC + +#+BEGIN_SRC emacs-lisp :tangle yes :results silent + (setq geiser-scheme-implementation 'guile) +#+END_SRC + +#+BEGIN_SRC scheme + (define a "3") + a +#+END_SRC + +#+RESULTS: +: 3 + +** Racket +#+BEGIN_SRC emacs-lisp :tangle yes :results silent + (use-package racket-mode + :ensure t + :config + (define-key racket-mode-map (kbd "s-r") 'racket-run) + (add-to-list 'racket-mode-hook (lambda () (lispy-mode 1)))) + + ;; set racket path + (setenv "PATH" (concat (getenv "PATH") + ":" "/Applications/Racket v6.6/bin")) + (setenv "MANPATH" (concat (getenv "MANPATH") + ":" "/Applications/Racket v6.6/man")) + (setq exec-path (append exec-path '("/Applications/Racket v6.6/bin"))) + + (add-to-list 'auto-mode-alist '("\\.rkt\\'" . racket-mode)) +#+END_SRC + * Compile Set the environments vairables in compilation mode #+BEGIN_SRC emacs-lisp :tangle yes :results silent @@ -1933,6 +2109,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 @@ -2525,6 +2703,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) @@ -2970,6 +3149,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