(ivy-done)
(ivy-shrink-after-dispatching))
+ (defun sd/exit-ivy-and-swith-to-buffer ()
+ "exit ivy complete, and call swith to buffer"
+ (interactive)
+ (ivy--exhibit)
+ (ivy-set-action (lambda (buf)
+ (ivy-switch-buffer)))
+ (when (ivy-read-action)
+ (ivy-done))
+ (ivy-shrink-after-dispatching))
+
(with-eval-after-load "ivy"
(define-key ivy-minibuffer-map (kbd "C-o") 'ivy-dispatching-done)
- (define-key ivy-minibuffer-map (kbd "C-k") #'sd/swith-buffer-other-window))
+ (define-key ivy-minibuffer-map (kbd "C-k") #'sd/swith-buffer-other-window)
+ ;; (define-key ivy-minibuffer-map (kbd "M-o") nil)
+ (define-key ivy-minibuffer-map (kbd "C-o") #'sd/exit-ivy-and-swith-to-buffer))
#+END_SRC
stolen from [[https://github.com/mariolong/emacs.d/blob/f6a061594ef1b5d1f4750e9dad9dc97d6e122840/emacs-init.org][here]]
;; Install Ubuntu Mono fonts and apply it in org-table to align Chinese fonts
- ;; (with-eval-after-load "org"
- ;; (mapc (lambda (face)
- ;; (set-face-attribute face nil :inherit 'fixed-pitch))
- ;; (list
- ;; 'org-code
- ;; 'org-block
- ;; 'org-block-background
- ;; 'org-block-begin-line
- ;; 'org-block-end-line))
- ;; (set-face-attribute 'org-table nil :family "Ubuntu Mono" :height 140)
- ;; (set-face-attribute 'org-formula nil :family "Ubuntu Mono" :height 140)
- ;; ;; org-special-keyword inherited from font-lock-keywork originally; as org is changed to variable-pitch, it cause
- ;; ;; the font in special-keywords are not monospace
- ;; (set-face-attribute 'org-special-keyword nil :inherit '(font-lock-keyword-face fixed-pitch))
- ;; ;; same as above
- ;; (set-face-attribute 'org-verbatim nil :inherit '(shadow fixed-pitch))
- ;; (set-face-attribute 'org-block-begin-line nil :inherit 'shadow :slant 'italic :foreground nil)
- ;; (set-face-attribute 'org-block-end-line nil :inherit 'shadow :slant 'italic :foreground nil)
+ (with-eval-after-load "org"
+ (mapc (lambda (face)
+ (set-face-attribute face nil :inherit 'fixed-pitch))
+ (list
+ 'org-code
+ 'org-block
+ 'org-block-background
+ 'org-block-begin-line
+ 'org-block-end-line))
+ (set-face-attribute 'org-table nil :family "Ubuntu Mono" :height 100)
+ (set-face-attribute 'org-formula nil :family "Ubuntu Mono" :height 100)
+ ;; org-special-keyword inherited from font-lock-keywork originally; as org is changed to variable-pitch, it cause
+ ;; the font in special-keywords are not monospace
+ (set-face-attribute 'org-special-keyword nil :inherit '(font-lock-keyword-face fixed-pitch))
+ ;; same as above
+ (set-face-attribute 'org-verbatim nil :inherit '(shadow fixed-pitch))
+ (set-face-attribute 'org-block-begin-line nil :inherit 'shadow :slant 'italic :foreground nil)
+ (set-face-attribute 'org-block-end-line nil :inherit 'shadow :slant 'italic :foreground nil)
- ;; ;; fix indent broken by variable-pitch-mode
- ;; ;; http://emacs.stackexchange.com/questions/26864/variable-pitch-face-breaking-indentation-in-org-mode
- ;; (require 'org-indent)
- ;; (set-face-attribute 'org-indent nil :inherit '(org-hide fixed-pitch)))
+ ;; fix indent broken by variable-pitch-mode
+ ;; http://emacs.stackexchange.com/questions/26864/variable-pitch-face-breaking-indentation-in-org-mode
+ (require 'org-indent)
+ (set-face-attribute 'org-indent nil :inherit '(org-hide fixed-pitch)))
;; (with-eval-after-load "org"
;; (let ((default-font-size (- (face-attribute 'default :height) (if (display-graphic-p) 20 0))))
"Projectile: "
("s" projectile-switch-open-project "Switch" :exit t)
("f" projectile-find-file "File" :exit t)
- ("b" projectile-switch-to-buffer "Buffer" :exit t))
-
-
-
+ ("b" projectile-switch-to-buffer "Buffer" :exit t)
+ ("p" projectile-switch-project "Project" :exit t))
#+END_SRC
*** hydra launcher
#+BEGIN_SRC emacs-lisp :tangle yes :results silent
(global-set-key (kbd "C-h") 'delete-backward-char)
(global-set-key (kbd "s-m") 'man)
+ (global-set-key (kbd "<s-return>") 'toggle-frame-fullscreen)
+ (global-set-key (kbd "s-f") 'projectile-find-file)
+ (global-set-key (kbd "s-=") 'text-scale-increase)
+ (global-set-key (kbd "s--") 'text-scale-decrease)
#+END_SRC
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]]
(message "rg is not found"))
#+END_SRC
-*** project config =super= keybindings
-#+BEGIN_SRC emacs-lisp :tangle yes :results silent
- ;; (global-set-key (kbd "s-h") 'keyboard-quit)
- ;; (global-set-key (kbd "s-j") 'ido-switch-buffer)
- ;; (global-set-key (kbd "s-k") 'ido-find-file)
- ;; (global-set-key (kbd "s-l") 'sd/delete-current-window)
- ;; s-l --> goto-line
- ;; (global-set-key (kbd "s-/") 'swiper)
- ;; s-; -->
- ;; s-' --> 'next-multiframe-window
- (global-set-key (kbd "<s-return>") 'toggle-frame-fullscreen)
-
- (global-set-key (kbd "s-f") 'projectile-find-file)
- ;; (global-set-key (kbd "s-`") 'mode-line-other-buffer)
-
- ;; (global-set-key (kbd "s-n") 'persp-next)
- ;; (global-set-key (kbd "s-p") 'persp-prev)
- ;; (global-set-key (kbd "s-;") 'persp-switch-last)
-
- (global-set-key (kbd "s-=") 'text-scale-increase)
- (global-set-key (kbd "s--") 'text-scale-decrease)
-
- ;; (global-set-key (kbd "s-u") 'undo-tree-visualize)
-#+END_SRC
-
** Windown & Buffer - =C-o=
Defind a =hydra= function for windows, buffer & bookmark operations. And map it to =C-o= globally.
Most use =C-o C-o= to switch buffers; =C-o x, v= to split window; =C-o o= to delete other windows
;; (global-set-key (kbd "M-g e") 'avy-goto-word-0)
;; (global-set-key (kbd "M-g f") 'avy-goto-char-timer)
;; (global-set-key (kbd "M-g c") 'avy-goto-char-in-line)
+ (global-set-key (kbd "M-g c") 'avy-goto-char)
+ (global-set-key (kbd "M-g b") 'avy-goto-word-0-above)
+ (global-set-key (kbd "M-g w") 'avy-goto-word-0-below)
#+END_SRC
*** =Imenu= goto tag
(el-get-bundle seudut/perspeen
:features perspeen
(setq perspeen-use-tab nil)
- (perspeen-mode))
+ ;; (perspeen-mode)
+ )
;; super-i to switch to ith workspace
* Key bindings
** Evil-Leader
#+BEGIN_SRC emacs-lisp :tangle yes :results silent
+ (defun sd/swith-to-buffer ()
+ "switch to buffer"
+ (interactive)
+ (call-interactively 'projectile-switch-to-buffer))
+
(with-eval-after-load "evil-leader"
(cl-loop for (key . fun ) in '(("F" . counsel-projectile-switch-to-buffer)
- ("f" . ivy-switch-buffer)
+ ("f" . (lambda () (interactive)
+ (call-interactively (if (projectile-project-p)
+ 'projectile-switch-to-buffer
+ 'ivy-switch-buffer))))
("b" . counsel-projectile-find-file)
("r" . ivy-recentf)
("w" . save-buffer)
("C-h" . delete-backward-char)
("C-k" . kill-line))
do (define-key evil-insert-state-map (kbd key-sequence) fun))
+
+ ;; remap some vim keybindings
+ (dolist (map (list
+ evil-normal-state-map
+ evil-visual-state-map
+ evil-motion-state-map))
+ (cl-loop for (keys . fun) in '(("'" . evil-goto-mark)
+ ("`" . evil-goto-mark-line))
+ do (define-key map (kbd keys) 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))
+ ;; (define-key evil-motion-state-map (kbd "SPC") 'scroll-up-command)
+ ;; (define-key evil-motion-state-map (kbd "S-SPC") 'scroll-down-command)
+ )
+
+
+ ;; (keymapp (car (list evil-normal-state-map evil-visual-state-map)))
+
+ ;; (keymapp (car '(evil-normal-state-map evil-visual-state-map)))
+ ;; (keymapp (car `(,evil-normal-state-map ,evil-visual-state-map)))
+
+
+ ;; (keymapp evil-normal-state-map)
+ ;; (keymapp 'evil-normal-state-map)
+ ;; (keymapp `,evil-normal-state-map)
#+END_SRC
(evil-define-key 'emacs eshell-mode-map (kbd (concat evil-leader/leader (car key-fun))) (cdr key-fun))))
;; (define-key eshell-mode-map (kbd "C-j") nil)
))
-
- ;;
- ;; (add-hook 'eshell-mode-map
- ;; (lambda ()
- ;; (mapc (lambda (key-fun)
- ;; (evil-define-key 'emacs eshell-mode-map (kbd (concat evil-leader/leader (car key-fun))) (cdr key-fun)))
- ;; '(("e" . dired)))))
-
- ;; (add-hook 'eshell-mode-hook (lambda ()
- ;; (loop for (key . fun) in '(
- ;; ("e" . sd/toggle-project-eshell))
- ;; do (evil-define-key 'emacs eshell-mode-map (kbd (concat evil-leader/leader key)) fun))))
#+END_SRC
** Dired mode
#+BEGIN_SRC emacs-lisp :tangle yes :results silent
** expand region
#+BEGIN_SRC emacs-lisp :tangle yes :results silent
- (with-eval-after-load "evil"
- (with-eval-after-load "expand-region"
- (define-key evil-normal-state-map (kbd "SPC") 'er/expand-region)
- (define-key evil-visual-state-map (kbd "SPC") 'er/expand-region)
- (define-key evil-visual-state-map (kbd "S-SPC") 'er/contract-region)
- (define-key evil-normal-state-map (kbd "S-SPC") 'er/contract-region)))
+ ;; (with-eval-after-load "evil"
+ ;; (with-eval-after-load "expand-region"
+ ;; (define-key evil-normal-state-map (kbd "SPC") 'er/expand-region)
+ ;; (define-key evil-visual-state-map (kbd "SPC") 'er/expand-region)
+ ;; (define-key evil-visual-state-map (kbd "S-SPC") 'er/contract-region)
+ ;; (define-key evil-normal-state-map (kbd "S-SPC") 'er/contract-region)))
#+END_SRC
** Org Mode (worf mode) and Lispy mode
(evil-define-key 'normal worf-mode-map (kbd "]") (lambda ()
(interactive)
(call-interactively #'worf-forward)
- (evil-emacs-state)))
- ;; (evil-define-key 'normal worf-mode-map (kbd "g") (lambda ()
- ;; (interactive)
- ;; (wspecial-worf-goto)
- ;; (evil-emacs-state)))
- ))
+ (evil-emacs-state)))))
#+END_SRC
** Avy & Evil
?z ?x ?c ?v ?b
?n ?m ?f ?j 59))
;; (setq avy-background t)
+ (setq avy-all-windows nil)
(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)
- (define-key map (kbd "W") 'avy-goto-char-timer)))
+ (define-key map (kbd "ge") 'avy-goto-word-0)
+ (define-key map (kbd "gc") 'avy-goto-char)))
#+END_SRC
** ggtags