d04012195a
Highlight should already be done automatocally. This highlight is not desirable because it breaks `n` and `N` search of occurences and it breaks `:nohl:` as well making it impossible to revert an highlighted word. These drawbacks were maybe intentional since it was about highlighting _permanently_ but it goes against principle of least astonishement, users will be consufed about an highlight that cannot be reverted whatsoever. We need an highlighting facility in Spacemacs, there was one at some point with the package `hl-anything` but at the time it was buggy and removed from Spacemacs (see layer spacemacs-editing-visual). Maybe we could try it again.
591 lines
23 KiB
EmacsLisp
591 lines
23 KiB
EmacsLisp
;;; packages.el --- Spacemacs Navigation Layer packages File
|
|
;;
|
|
;; Copyright (c) 2012-2017 Sylvain Benner & Contributors
|
|
;;
|
|
;; Author: Sylvain Benner <sylvain.benner@gmail.com>
|
|
;; URL: https://github.com/syl20bnr/spacemacs
|
|
;;
|
|
;; This file is not part of GNU Emacs.
|
|
;;
|
|
;;; License: GPLv3
|
|
|
|
(setq spacemacs-navigation-packages
|
|
'(ace-link
|
|
auto-highlight-symbol
|
|
(centered-cursor :location local)
|
|
(doc-view :location built-in)
|
|
flx-ido
|
|
golden-ratio
|
|
info+
|
|
neotree
|
|
open-junk-file
|
|
paradox
|
|
restart-emacs
|
|
(smooth-scrolling :location built-in)
|
|
winum
|
|
))
|
|
|
|
(defun spacemacs-navigation/init-ace-link ()
|
|
(use-package ace-link
|
|
:commands spacemacs/ace-buffer-links
|
|
:init
|
|
(progn
|
|
(define-key spacemacs-buffer-mode-map "o" 'spacemacs/ace-buffer-links)
|
|
(with-eval-after-load 'info
|
|
(define-key Info-mode-map "o" 'ace-link-info))
|
|
(with-eval-after-load 'help-mode
|
|
(define-key help-mode-map "o" 'ace-link-help))
|
|
(with-eval-after-load 'eww
|
|
(define-key eww-link-keymap "o" 'ace-link-eww)
|
|
(define-key eww-mode-map "o" 'ace-link-eww)))
|
|
:config
|
|
(progn
|
|
(defvar spacemacs--link-pattern "~?/.+\\|\s\\[")
|
|
(defun spacemacs//collect-spacemacs-buffer-links ()
|
|
(let ((end (window-end))
|
|
points)
|
|
(save-excursion
|
|
(goto-char (window-start))
|
|
(while (re-search-forward spacemacs--link-pattern end t)
|
|
(push (+ (match-beginning 0) 1) points))
|
|
(nreverse points))))
|
|
(defun spacemacs/ace-buffer-links ()
|
|
"Ace jump to links in `spacemacs' buffer."
|
|
(interactive)
|
|
(let ((res (avy-with spacemacs/ace-buffer-links
|
|
(avy--process
|
|
(spacemacs//collect-spacemacs-buffer-links)
|
|
#'avy--overlay-pre))))
|
|
(when res
|
|
(goto-char (1+ res))
|
|
(widget-button-press (point))))))))
|
|
|
|
(defun spacemacs-navigation/init-auto-highlight-symbol ()
|
|
(use-package auto-highlight-symbol
|
|
:defer t
|
|
:init
|
|
(progn
|
|
(setq ahs-case-fold-search nil
|
|
ahs-default-range 'ahs-range-whole-buffer
|
|
;; by default disable auto-highlight of symbol
|
|
;; current symbol can always be highlighted with `SPC s h'
|
|
ahs-idle-timer 0
|
|
ahs-idle-interval 0.25
|
|
ahs-inhibit-face-list nil
|
|
spacemacs--symbol-highlight-transient-state-doc
|
|
"
|
|
%s [_n_] next [_N_/_p_] previous [_r_] change range [_R_] reset [_e_] iedit
|
|
%s [_d_/_D_] next/previous definition")
|
|
|
|
;; since we are creating our own maps,
|
|
;; prevent the default keymap from getting created
|
|
(setq auto-highlight-symbol-mode-map (make-sparse-keymap))
|
|
|
|
(spacemacs|add-toggle automatic-symbol-highlight
|
|
:status (timerp ahs-idle-timer)
|
|
:on (progn
|
|
(auto-highlight-symbol-mode)
|
|
(setq ahs-idle-timer
|
|
(run-with-idle-timer ahs-idle-interval t
|
|
'ahs-idle-function)))
|
|
:off (when (timerp ahs-idle-timer)
|
|
(auto-highlight-symbol-mode)
|
|
(cancel-timer ahs-idle-timer)
|
|
(setq ahs-idle-timer 0))
|
|
:documentation "Automatic highlight of current symbol."
|
|
:evil-leader "tha")
|
|
(spacemacs/add-to-hooks 'auto-highlight-symbol-mode '(prog-mode-hook
|
|
markdown-mode-hook)))
|
|
:config
|
|
(progn
|
|
(spacemacs|hide-lighter auto-highlight-symbol-mode)
|
|
(defvar-local spacemacs-last-ahs-highlight-p nil
|
|
"Info on the last searched highlighted symbol.")
|
|
(defvar-local spacemacs--ahs-searching-forward t)
|
|
|
|
(with-eval-after-load 'evil
|
|
(define-key evil-motion-state-map (kbd "*")
|
|
'spacemacs/enter-ahs-forward)
|
|
(define-key evil-motion-state-map (kbd "#")
|
|
'spacemacs/enter-ahs-backward))
|
|
|
|
(spacemacs/set-leader-keys
|
|
"sh" 'spacemacs/symbol-highlight
|
|
"sH" 'spacemacs/goto-last-searched-ahs-symbol)
|
|
|
|
;; micro-state to easily jump from a highlighted symbol to the others
|
|
(dolist (sym '(ahs-forward
|
|
ahs-forward-definition
|
|
ahs-backward
|
|
ahs-backward-definition
|
|
ahs-back-to-start
|
|
ahs-change-range))
|
|
(let* ((advice (intern (format "spacemacs/%s" (symbol-name sym)))))
|
|
(eval `(defadvice ,sym (around ,advice activate)
|
|
(spacemacs/ahs-highlight-now-wrapper)
|
|
ad-do-it
|
|
(spacemacs/ahs-highlight-now-wrapper)
|
|
(setq spacemacs-last-ahs-highlight-p (ahs-highlight-p))))))
|
|
|
|
;; transient state
|
|
(spacemacs|define-transient-state symbol-highlight
|
|
:title "Symbol Highlight Transient State"
|
|
:dynamic-hint (spacemacs//symbol-highlight-ts-doc)
|
|
:before-exit (spacemacs//ahs-ms-on-exit)
|
|
:bindings
|
|
("d" ahs-forward-definition)
|
|
("D" ahs-backward-definition)
|
|
("e" spacemacs/ahs-to-iedit :exit t)
|
|
("n" spacemacs/quick-ahs-forward)
|
|
("N" spacemacs/quick-ahs-backward)
|
|
("p" spacemacs/quick-ahs-backward)
|
|
("R" ahs-back-to-start)
|
|
("r" ahs-change-range)
|
|
("q" nil :exit t)))))
|
|
|
|
(defun spacemacs-navigation/init-centered-cursor ()
|
|
(use-package centered-cursor-mode
|
|
:commands (centered-cursor-mode
|
|
global-centered-cursor-mode)
|
|
:init
|
|
(progn
|
|
(spacemacs|add-toggle centered-point
|
|
:mode centered-cursor-mode
|
|
:documentation
|
|
"Keep point at the center of the window."
|
|
:evil-leader "t-")
|
|
(spacemacs|add-toggle centered-point-globally
|
|
:mode global-centered-cursor-mode
|
|
:documentation
|
|
"Keep point at the center of the window globally."
|
|
:evil-leader "t C--"))
|
|
:config
|
|
(progn
|
|
(setq ccm-recenter-at-end-of-file t
|
|
ccm-ignored-commands '(mouse-drag-region
|
|
mouse-set-point
|
|
widget-button-click
|
|
scroll-bar-toolkit-scroll
|
|
evil-mouse-drag-region))
|
|
(spacemacs|diminish centered-cursor-mode " ⊝" " -"))))
|
|
|
|
(defun spacemacs-navigation/init-doc-view ()
|
|
(use-package doc-view
|
|
:defer t
|
|
:init
|
|
(evilified-state-evilify doc-view-mode doc-view-mode-map
|
|
"/" 'spacemacs/doc-view-search-new-query
|
|
"?" 'spacemacs/doc-view-search-new-query-backward
|
|
"gg" 'doc-view-first-page
|
|
"G" 'spacemacs/doc-view-goto-page
|
|
"gt" 'doc-view-goto-page
|
|
"h" 'doc-view-previous-page
|
|
"j" 'doc-view-next-line-or-next-page
|
|
"k" 'doc-view-previous-line-or-previous-page
|
|
"K" 'doc-view-kill-proc-and-buffer
|
|
"l" 'doc-view-next-page
|
|
"n" 'doc-view-search
|
|
"N" 'doc-view-search-backward
|
|
(kbd "C-d") 'doc-view-scroll-up-or-next-page
|
|
(kbd "C-k") 'doc-view-kill-proc
|
|
(kbd "C-u") 'doc-view-scroll-down-or-previous-page)
|
|
:config
|
|
(progn
|
|
(defun spacemacs/doc-view-search-new-query ()
|
|
"Initiate a new query."
|
|
(interactive)
|
|
(doc-view-search 'newquery))
|
|
|
|
(defun spacemacs/doc-view-search-new-query-backward ()
|
|
"Initiate a new query."
|
|
(interactive)
|
|
(doc-view-search 'newquery t))
|
|
|
|
(defun spacemacs/doc-view-goto-page (&optional count)
|
|
(interactive (list
|
|
(when current-prefix-arg
|
|
(prefix-numeric-value current-prefix-arg))))
|
|
(if (null count)
|
|
(doc-view-last-page)
|
|
(doc-view-goto-page count)))
|
|
|
|
;; fixed a weird issue where toggling display does not
|
|
;; swtich to text mode
|
|
(defadvice doc-view-toggle-display
|
|
(around spacemacs/doc-view-toggle-display activate)
|
|
(if (eq major-mode 'doc-view-mode)
|
|
(progn
|
|
ad-do-it
|
|
(text-mode)
|
|
(doc-view-minor-mode))
|
|
ad-do-it)))))
|
|
|
|
(defun spacemacs-navigation/init-flx-ido ()
|
|
(use-package flx-ido
|
|
:init (flx-ido-mode 1)))
|
|
|
|
(defun spacemacs-navigation/init-golden-ratio ()
|
|
(use-package golden-ratio
|
|
:defer t
|
|
:init
|
|
(progn
|
|
(setq spacemacs-window-manipulation-transient-state-add-bindings
|
|
'(("g" spacemacs/toggle-golden-ratio)))
|
|
(spacemacs|add-toggle golden-ratio
|
|
:status golden-ratio-mode
|
|
:on (golden-ratio-mode) (golden-ratio)
|
|
:off (golden-ratio-mode -1) (balance-windows)
|
|
:documentation "Resize the focused window using the golden ratio."
|
|
:evil-leader "tg"))
|
|
:config
|
|
(progn
|
|
;; golden-ratio-exclude-modes
|
|
(dolist (m '("bs-mode"
|
|
"calc-mode"
|
|
"ediff-mode"
|
|
"dired-mode"
|
|
"gud-mode"
|
|
"gdb-locals-mode"
|
|
"gdb-registers-mode"
|
|
"gdb-breakpoints-mode"
|
|
"gdb-threads-mode"
|
|
"gdb-frames-mode"
|
|
"gdb-inferior-io-mode"
|
|
"gdb-disassembly-mode"
|
|
"gdb-memory-mode"
|
|
"speedbar-mode"
|
|
))
|
|
(add-to-list 'golden-ratio-exclude-modes m))
|
|
|
|
(add-to-list 'golden-ratio-exclude-buffer-regexp "^\\*[hH]elm.*")
|
|
|
|
;; golden-ratio-extra-commands
|
|
(dolist (f '(ace-window
|
|
ace-delete-window
|
|
ace-select-window
|
|
ace-swap-window
|
|
ace-maximize-window
|
|
avy-pop-mark
|
|
buf-move-left
|
|
buf-move-right
|
|
buf-move-up
|
|
buf-move-down
|
|
evil-avy-goto-word-or-subword-1
|
|
evil-avy-goto-line
|
|
evil-window-delete
|
|
evil-window-split
|
|
evil-window-vsplit
|
|
evil-window-left
|
|
evil-window-right
|
|
evil-window-up
|
|
evil-window-down
|
|
evil-window-bottom-right
|
|
evil-window-top-left
|
|
evil-window-mru
|
|
evil-window-next
|
|
evil-window-prev
|
|
evil-window-new
|
|
evil-window-vnew
|
|
evil-window-rotate-upwards
|
|
evil-window-rotate-downwards
|
|
evil-window-move-very-top
|
|
evil-window-move-far-left
|
|
evil-window-move-far-right
|
|
evil-window-move-very-bottom
|
|
quit-window
|
|
winum-select-window-0-or-10
|
|
winum-select-window-1
|
|
winum-select-window-2
|
|
winum-select-window-3
|
|
winum-select-window-4
|
|
winum-select-window-5
|
|
winum-select-window-6
|
|
winum-select-window-7
|
|
winum-select-window-8
|
|
winum-select-window-9
|
|
windmove-left
|
|
windmove-right
|
|
windmove-up
|
|
windmove-down))
|
|
(add-to-list 'golden-ratio-extra-commands f))
|
|
|
|
;; golden-ratio-exclude-buffer-names
|
|
(dolist (n '(" *NeoTree*"
|
|
"*LV*"
|
|
" *which-key*"))
|
|
(add-to-list 'golden-ratio-exclude-buffer-names n))
|
|
|
|
(add-to-list 'golden-ratio-inhibit-functions
|
|
'spacemacs/no-golden-ratio-guide-key)
|
|
|
|
(spacemacs|diminish golden-ratio-mode " ⓖ" " g"))))
|
|
|
|
(defun spacemacs-navigation/init-info+ ()
|
|
(use-package info+
|
|
:defer t
|
|
:init
|
|
(progn
|
|
(with-eval-after-load 'info
|
|
(require 'info+))
|
|
(setq Info-fontify-angle-bracketed-flag nil))))
|
|
|
|
(defun spacemacs-navigation/init-neotree ()
|
|
(use-package neotree
|
|
:defer t
|
|
:commands neo-global--window-exists-p
|
|
:init
|
|
(progn
|
|
(setq neo-window-width 32
|
|
neo-create-file-auto-open t
|
|
neo-banner-message "Press ? for neotree help"
|
|
neo-show-updir-line nil
|
|
neo-mode-line-type 'neotree
|
|
neo-smart-open t
|
|
neo-dont-be-alone t
|
|
neo-persist-show nil
|
|
neo-show-hidden-files t
|
|
neo-auto-indent-point t
|
|
neo-modern-sidebar t
|
|
neo-vc-integration nil)
|
|
|
|
(spacemacs|define-transient-state neotree
|
|
:title "NeoTree Key Hints"
|
|
:doc "
|
|
Navigation^^^^ Actions^^ Visual actions/config^^^
|
|
───────^^^^─────────────── ───────^^──────── ───────^^^────────────────
|
|
[_L_] next sibling^^ [_c_] create [_TAB_] shrink/enlarge
|
|
[_H_] previous sibling^^ [_C_] copy [_|_] vertical split
|
|
[_J_] goto child^^ [_d_] delete [_-_] horizontal split
|
|
[_K_] goto parent^^ [_r_] rename [_gr_] refresh^
|
|
[_l_] open/expand^^ [_R_] change root [_s_] hidden:^^^ %s(if neo-buffer--show-hidden-file-p \"on\" \"off\")
|
|
[_h_] up/collapse^^ ^^ ^^^
|
|
[_j_] line down^^ ^^ ^^^
|
|
[_k_] line up^^ ^^ ^^
|
|
[_'_] quick look ^^ ^^
|
|
[_RET_] open ^^^^ [_?_] close hints
|
|
"
|
|
:bindings
|
|
("RET" neotree-enter)
|
|
("TAB" neotree-stretch-toggle)
|
|
("|" neotree-enter-vertical-split)
|
|
("-" neotree-enter-horizontal-split)
|
|
("?" nil :exit t)
|
|
("'" neotree-quick-look)
|
|
("c" neotree-create-node)
|
|
("C" neotree-copy-node)
|
|
("d" neotree-delete-node)
|
|
("gr" neotree-refresh)
|
|
("h" spacemacs/neotree-collapse-or-up)
|
|
("H" neotree-select-previous-sibling-node)
|
|
("j" neotree-next-line)
|
|
("J" neotree-select-down-node)
|
|
("k" neotree-previous-line)
|
|
("K" neotree-select-up-node)
|
|
("l" spacemacs/neotree-expand-or-open)
|
|
("L" neotree-select-next-sibling-node)
|
|
("r" neotree-rename-node)
|
|
("R" neotree-change-root)
|
|
("s" neotree-hidden-file-toggle))
|
|
|
|
(defun spacemacs//neotree-key-bindings ()
|
|
"Set the key bindings for a neotree buffer."
|
|
(evilified-state-evilify-map neotree-mode-map
|
|
:mode neotree-mode
|
|
:bindings
|
|
(kbd "TAB") 'neotree-stretch-toggle
|
|
(kbd "RET") 'neotree-enter
|
|
(kbd "|") 'neotree-enter-vertical-split
|
|
(kbd "-") 'neotree-enter-horizontal-split
|
|
(kbd "'") 'neotree-quick-look
|
|
(kbd "c") 'neotree-create-node
|
|
(kbd "C") 'neotree-copy-node
|
|
(kbd "d") 'neotree-delete-node
|
|
(kbd "gr") 'neotree-refresh
|
|
(kbd "h") 'spacemacs/neotree-collapse-or-up
|
|
(kbd "H") 'neotree-select-previous-sibling-node
|
|
(kbd "j") 'neotree-next-line
|
|
(kbd "J") 'neotree-select-down-node
|
|
(kbd "k") 'neotree-previous-line
|
|
(kbd "K") 'neotree-select-up-node
|
|
(kbd "l") 'spacemacs/neotree-expand-or-open
|
|
(kbd "L") 'neotree-select-next-sibling-node
|
|
(kbd "q") 'neotree-hide
|
|
(kbd "r") 'neotree-rename-node
|
|
(kbd "R") 'neotree-change-root
|
|
(kbd "?") 'spacemacs/neotree-transient-state/body
|
|
(kbd "s") 'neotree-hidden-file-toggle))
|
|
|
|
(spacemacs/set-leader-keys
|
|
"ft" 'neotree-toggle
|
|
"fT" 'neotree-show
|
|
"pt" 'neotree-find-project-root))
|
|
:config
|
|
(spacemacs//neotree-key-bindings)))
|
|
|
|
(defun spacemacs-navigation/init-open-junk-file ()
|
|
(use-package open-junk-file
|
|
:defer t
|
|
:commands (open-junk-file)
|
|
:init
|
|
(setq open-junk-file-format (concat spacemacs-cache-directory "junk/%Y/%m/%d-%H%M%S."))
|
|
(defun spacemacs/open-junk-file (&optional arg)
|
|
"Open junk file using helm or ivy.
|
|
|
|
Interface choice depends on whether the `ivy' layer is used or
|
|
not.
|
|
|
|
When ARG is non-nil search in junk files."
|
|
(interactive "P")
|
|
(let* ((fname (format-time-string open-junk-file-format (current-time)))
|
|
(rel-fname (file-name-nondirectory fname))
|
|
(junk-dir (file-name-directory fname))
|
|
(default-directory junk-dir))
|
|
(cond ((and arg (configuration-layer/layer-usedp 'ivy))
|
|
(spacemacs/counsel-search dotspacemacs-search-tools nil junk-dir))
|
|
((configuration-layer/layer-usedp 'ivy)
|
|
(require 'counsel)
|
|
(counsel-find-file rel-fname))
|
|
(arg
|
|
(require 'helm)
|
|
(let (helm-ff-newfile-prompt-p)
|
|
(spacemacs/helm-files-smart-do-search)))
|
|
(t
|
|
(require 'helm)
|
|
(let (helm-ff-newfile-prompt-p)
|
|
(helm-find-files-1 fname))))))
|
|
(spacemacs/set-leader-keys "fJ" 'spacemacs/open-junk-file)))
|
|
|
|
(defun spacemacs-navigation/init-paradox ()
|
|
(use-package paradox
|
|
:commands paradox-list-packages
|
|
:init
|
|
(progn
|
|
(setq paradox-execute-asynchronously nil)
|
|
(defun spacemacs/paradox-list-packages ()
|
|
"Load depdendencies for auth and open the package list."
|
|
(interactive)
|
|
(require 'epa-file)
|
|
(require 'auth-source)
|
|
(when (and (not (boundp 'paradox-github-token))
|
|
(file-exists-p "~/.authinfo.gpg"))
|
|
(let ((authinfo-result (car (auth-source-search
|
|
:max 1
|
|
:host "github.com"
|
|
:port "paradox"
|
|
:user "paradox"
|
|
:require '(:secret)))))
|
|
(let ((paradox-token (plist-get authinfo-result :secret)))
|
|
(setq paradox-github-token (if (functionp paradox-token)
|
|
(funcall paradox-token)
|
|
paradox-token)))))
|
|
(paradox-list-packages nil))
|
|
|
|
(evilified-state-evilify paradox-menu-mode paradox-menu-mode-map
|
|
"H" 'paradox-menu-quick-help
|
|
"J" 'paradox-next-describe
|
|
"K" 'paradox-previous-describe
|
|
"L" 'paradox-menu-view-commit-list
|
|
"o" 'paradox-menu-visit-homepage)
|
|
(spacemacs/set-leader-keys
|
|
"ak" 'spacemacs/paradox-list-packages))))
|
|
|
|
(defun spacemacs-navigation/init-restart-emacs()
|
|
(use-package restart-emacs
|
|
:defer t
|
|
:init
|
|
(defun spacemacs/restart-emacs (&optional args)
|
|
"Restart emacs."
|
|
(interactive)
|
|
(setq spacemacs-really-kill-emacs t)
|
|
(restart-emacs args))
|
|
(defun spacemacs/restart-emacs-resume-layouts (&optional args)
|
|
"Restart emacs and resume layouts."
|
|
(interactive)
|
|
(spacemacs/restart-emacs (cons "--resume-layouts" args)))
|
|
(defun spacemacs/restart-emacs-debug-init (&optional args)
|
|
"Restart emacs and enable debug-init."
|
|
(interactive)
|
|
(spacemacs/restart-emacs (cons "--debug-init" args)))
|
|
(defun spacemacs/restart-stock-emacs-with-packages (packages &optional args)
|
|
"Restart emacs without the spacemacs configuration, enable
|
|
debug-init and load the given list of packages."
|
|
(interactive
|
|
(progn
|
|
(unless package--initialized
|
|
(package-initialize t))
|
|
(let ((packages (append (mapcar 'car package-alist)
|
|
(mapcar 'car package-archive-contents)
|
|
(mapcar 'car package--builtins))))
|
|
(setq packages (mapcar 'symbol-name packages))
|
|
(let ((val (completing-read-multiple "Packages to load (comma separated): "
|
|
packages nil t)))
|
|
`(,val)))))
|
|
(let ((load-packages-string (mapconcat (lambda (pkg) (format "(use-package %s)" pkg))
|
|
packages " ")))
|
|
(spacemacs/restart-emacs-debug-init
|
|
(append (list "-q" "--execute"
|
|
(concat "(progn (package-initialize) "
|
|
"(require 'use-package)"
|
|
load-packages-string ")"))
|
|
args))))
|
|
(spacemacs/set-leader-keys
|
|
"qd" 'spacemacs/restart-emacs-debug-init
|
|
"qD" 'spacemacs/restart-stock-emacs-with-packages
|
|
"qr" 'spacemacs/restart-emacs-resume-layouts
|
|
"qR" 'spacemacs/restart-emacs)))
|
|
|
|
(defun spacemacs-navigation/init-smooth-scrolling ()
|
|
(setq scroll-preserve-screen-position t
|
|
scroll-margin 0
|
|
scroll-conservatively (if dotspacemacs-smooth-scrolling 101 0))
|
|
(spacemacs|add-toggle smooth-scrolling
|
|
:status (= 101 scroll-conservatively)
|
|
:on (spacemacs/enable-smooth-scrolling)
|
|
:off (spacemacs/disable-smooth-scrolling)
|
|
:documentation "Smooth scrolling."
|
|
:evil-leader "tv"))
|
|
|
|
(defun spacemacs-navigation/init-winum ()
|
|
(use-package winum
|
|
:config
|
|
(progn
|
|
(defun spacemacs//winum-assign-func ()
|
|
"Custom number assignment for neotree."
|
|
(when (and (boundp 'neo-buffer-name)
|
|
(string= (buffer-name) neo-buffer-name)
|
|
;; in case there are two neotree windows. Example: when
|
|
;; invoking a transient state from neotree window, the new
|
|
;; window will show neotree briefly before displaying the TS,
|
|
;; causing an error message. the error is eliminated by
|
|
;; assigning 0 only to the top-left window
|
|
(eq (selected-window) (frame-first-window)))
|
|
0))
|
|
(setq winum-auto-assign-0-to-minibuffer nil
|
|
winum-assign-func 'spacemacs//winum-assign-func
|
|
winum-auto-setup-mode-line nil
|
|
winum-ignored-buffers '(" *which-key*"))
|
|
(spacemacs/set-leader-keys
|
|
"`" 'winum-select-window-by-number
|
|
"²" 'winum-select-window-by-number
|
|
"0" 'winum-select-window-0-or-10
|
|
"1" 'winum-select-window-1
|
|
"2" 'winum-select-window-2
|
|
"3" 'winum-select-window-3
|
|
"4" 'winum-select-window-4
|
|
"5" 'winum-select-window-5
|
|
"6" 'winum-select-window-6
|
|
"7" 'winum-select-window-7
|
|
"8" 'winum-select-window-8
|
|
"9" 'winum-select-window-9)
|
|
(define-key winum-keymap (kbd "M-0") 'winum-select-window-0-or-10)
|
|
(define-key winum-keymap (kbd "M-1") 'winum-select-window-1)
|
|
(define-key winum-keymap (kbd "M-2") 'winum-select-window-2)
|
|
(define-key winum-keymap (kbd "M-3") 'winum-select-window-3)
|
|
(define-key winum-keymap (kbd "M-4") 'winum-select-window-4)
|
|
(define-key winum-keymap (kbd "M-5") 'winum-select-window-5)
|
|
(define-key winum-keymap (kbd "M-6") 'winum-select-window-6)
|
|
(define-key winum-keymap (kbd "M-7") 'winum-select-window-7)
|
|
(define-key winum-keymap (kbd "M-8") 'winum-select-window-8)
|
|
(define-key winum-keymap (kbd "M-9") 'winum-select-window-9)
|
|
(winum-mode))))
|