;;; funcs.el --- Spacemacs Evil Layer functions File ;; ;; Copyright (c) 2012-2022 Sylvain Benner & Contributors ;; ;; Author: Sylvain Benner ;; URL: https://github.com/syl20bnr/spacemacs ;; ;; This file is not part of GNU Emacs. ;; ;; This program is free software; you can redistribute it and/or modify ;; it under the terms of the GNU General Public License as published by ;; the Free Software Foundation, either version 3 of the License, or ;; (at your option) any later version. ;; ;; This program is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ;; GNU General Public License for more details. ;; ;; You should have received a copy of the GNU General Public License ;; along with this program. If not, see . (defvar spacemacs--evil-iedit-insert-states-default nil "Default value of the list of additional states enabled in \ `evil-iedit-insert-state'.") (defvar spacemacs--evil-iedit-insert-states-hybrid nil "List of additional states enabled in `evil-iedit-insert-state' when `hybrid-mode' is active.") (defun spacemacs//enable-hs-minor-mode () "Enable hs-minor-mode for code folding." (ignore-errors (hs-minor-mode) (spacemacs|hide-lighter hs-minor-mode))) (defun spacemacs//iedit-insert-state-hybrid (style) "If STYLE is hybrid, update `evil-iedit-insert-state' definition to enable `evil-hybrid-state' instead of `evil-insert-state'. Otherwise, revert to the default behavior (i.e. enable `evil-insert-state')." ;; Populate variables on the first invocation. (unless spacemacs--evil-iedit-insert-states-default (setq spacemacs--evil-iedit-insert-states-default (evil-get-property evil-state-properties 'iedit-insert :enable)) (setq spacemacs--evil-iedit-insert-states-hybrid (mapcar (lambda (item) (if (eq item 'insert) 'hybrid item)) spacemacs--evil-iedit-insert-states-default))) (let ((states (if (eq style 'hybrid) spacemacs--evil-iedit-insert-states-hybrid spacemacs--evil-iedit-insert-states-default))) (evil-put-property 'evil-state-properties 'iedit-insert :enable states))) (defun spacemacs//iedit-state-TAB-key-bindings (style) "Set the action for TAB key in iedit state." (if (memq style '(vim hybrid)) (progn (define-key iedit-occurrence-keymap-default (kbd "TAB") 'iedit-toggle-selection) (define-key iedit-occurrence-keymap-default [tab] 'iedit-toggle-selection)) (progn (define-key iedit-occurrence-keymap-default (kbd "TAB") 'iedit-next-occurrence) (define-key iedit-occurrence-keymap-default [tab] 'iedit-next-occurrence)))) (defun spacemacs//evil-escape-deactivate-in-holy-mode (style) "Deactivate `evil-escape' if STYLE is `emacs' otherwise enable it." (if (memq style '(vim hybrid)) (evil-escape-mode t) (evil-escape-mode -1))) ;; vi-tilde-fringe (defun spacemacs/disable-vi-tilde-fringe () "Disable `vi-tilde-fringe' in the current buffer." (vi-tilde-fringe-mode -1)) (defun spacemacs/disable-vi-tilde-fringe-read-only () "Disable `vi-tilde-fringe' in the current buffer if it is read only." (when buffer-read-only (spacemacs/disable-vi-tilde-fringe))) ;; lisp state (defun spacemacs//load-evil-lisp-state () "Load evil-lisp-state lazily" (require 'evil-lisp-state))