From 212daa8f51b00f7353cd32c6edf1bc71c49a99b8 Mon Sep 17 00:00:00 2001 From: Peng Li Date: Sat, 28 Oct 2017 21:09:18 +0800 Subject: [PATCH] Emacs - avy goto --- emacs.d/config.org | 32 +++++++++++++++++++------------- emacs.d/emacs-evil.org | 44 +++++++++++++++++++++----------------------- 2 files changed, 40 insertions(+), 36 deletions(-) diff --git a/emacs.d/config.org b/emacs.d/config.org index 976bc82..7dc3fc6 100644 --- a/emacs.d/config.org +++ b/emacs.d/config.org @@ -2404,18 +2404,18 @@ C/C++ ide tools ;; (setq c-default-style "stroustrup" ;; c-basic-offset 4) - ;; "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)) + ;; ;; "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)) - (setq c-hungry-delete-key t) + (setq-default c-hungry-delete-key t) ;; Looks `c-hanging-braces-alist' doesn't work as expected when `electric-pair-mode' is enabled. @@ -2442,7 +2442,6 @@ C/C++ ide tools ;; (advice-add 'c-electric-brace :after (lambda (arg) "Add new line after insert {}" (newline-and-indent))) #+END_SRC - *** irony **** install irony server Install clang, on mac, it has =libclang.dylib=, but no develop headers. Install by =brew= @@ -2481,10 +2480,10 @@ irony-mode-hook, copied from [[https://github.com/Sarcasm/irony-mode][irony-mode (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 '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-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 @@ -2591,7 +2590,7 @@ irony-company (setq out-file-name (shell-quote-argument (concat (file-name-sans-extension buffer-file-name) ".out")))) (setq-local compilation-read-command t) (set (make-local-variable 'compile-command) - (concat "g++ -Wall " + (concat "g++ -Wall -std=c++11 " current-file-name " -o " out-file-name @@ -2845,6 +2844,13 @@ Emacs lisp auto-insert, based on the default module in =autoinsert.el=, but repl :ensure t) #+END_SRC +* Iedit +#+BEGIN_SRC emacs-lisp :tangle yes :results silent + (use-package iedit + :ensure t + :init + (global-set-key (kbd "C-;") #'iedit-mode)) +#+END_SRC * Gnus ** Gmail setting Refer [[https://www.emacswiki.org/emacs/GnusGmail][GnusGmail]] diff --git a/emacs.d/emacs-evil.org b/emacs.d/emacs-evil.org index 8413280..fc936b2 100644 --- a/emacs.d/emacs-evil.org +++ b/emacs.d/emacs-evil.org @@ -22,7 +22,7 @@ https://www.emacswiki.org/emacs/Evil. (setq evil-replace-state-cursor '("red" bar)) (setq evil-operator-state-cursor '("red" hollow)) ;; others, don't move back cursor when exit insert mode - (setq evil-move-cursor-back nil) + ;; (setq evil-move-cursor-back nil) :config (use-package evil-leader :ensure t @@ -37,16 +37,6 @@ https://www.emacswiki.org/emacs/Evil. (modify-syntax-entry ?_ "w") ;; (modify-syntax-entry ?- "w") )) - - (with-eval-after-load "evil" - ;; remap x to X as `evil-move-cursor-back' is set nil - ;; (define-key evil-normal-state-map [remap evil-delete-char] 'evil-delete-backward-char) - (define-key evil-normal-state-map (kbd "x") (lambda () (interactive) - (let ((org evil-move-cursor-back)) - (setq evil-move-cursor-back t) - (call-interactively 'evil-delete-char) - ;; (evil-delete-char) - (setq evil-move-cursor-back org))))) #+END_SRC ** Initial mode and state config @@ -168,19 +158,18 @@ There are three kinds key bindings (define-key map (kbd ",") 'evil-repeat-find-char)) (list evil-normal-state-map evil-motion-state-map)) - - ;; (define-key evil-normal-state-map "s" nil) - ;; (define-key evil-normal-state-map "sj" 'ivy-switch-buffer) - ;; normal state - ;; (define-key evil-normal-state-map (kbd "C-SPC") 'mode-line-other-buffer) - (define-key evil-normal-state-map (kbd "C-;") 'previous-multiframe-window) ;; insert state - (define-key evil-insert-state-map (kbd "C-p") 'previous-line) - (define-key evil-insert-state-map (kbd "C-n") 'next-line) - (define-key evil-insert-state-map (kbd "C-h") 'delete-backward-char) - (define-key evil-insert-state-map (kbd "C-a") 'move-beginning-of-line) - (define-key evil-insert-state-map (kbd "C-e") 'move-end-of-line) - (define-key evil-insert-state-map (kbd "C-k") 'kill-line) + (cl-loop for (key-sequence . fun) in '(("C-;" . iedit-mode) + ("C-n" . next-line) + ("C-p" . previous-line) + ("C-a" . move-beginning-of-line) + ("C-e" . move-end-of-line) + ("C-h" . delete-backward-char) + ("C-k" . kill-line)) + do (define-key evil-insert-state-map (kbd key-sequence) fun)) + + + ;; motion mode (define-key evil-motion-state-map (kbd "SPC") 'scroll-up-command) (define-key evil-motion-state-map (kbd "S-SPC") 'scroll-down-command)) @@ -308,10 +297,19 @@ Let the search highlight persistent, https://stackoverflow.com/questions/2576803 ** Avy & Evil #+BEGIN_SRC emacs-lisp :tangle yes :results silent + (setq avy-keys '(?a ?s ?d ?g + ?h ?k ?l + ?q ?w ?e ?r ?t + ?y ?u ?i ?o ?p + ?z ?x ?c ?v ?b + ?n ?m ?f ?j 59)) + ;; (setq avy-background t) (with-eval-after-load "evil" (dolist (map (list evil-normal-state-map evil-visual-state-map evil-motion-state-map)) + (define-key map (kbd "gw") 'avy-goto-word-0-below) + (define-key map (kbd "gb") 'avy-goto-word-0-above) (define-key map (kbd "J") 'avy-goto-line-below) (define-key map (kbd "K") 'avy-goto-line-above) (define-key map (kbd "F") 'avy-goto-char) -- 2.11.0