refactor(folding): Improve siren-folding module

- Add a siren-folding function which enables all folding-related modes,
  and change other modules to use this new function.
This commit is contained in:
2020-01-26 21:23:50 +00:00
parent 392d769816
commit abff344eb2
19 changed files with 82 additions and 77 deletions

View File

@@ -184,9 +184,5 @@ indent yanked text (with prefix arg don't indent)."
(require 're-builder)
(setq reb-re-syntax 'string)
;; diminish various modes
;; (diminish 'hs-minor-mode)
;; (diminish 'subword-mode)
(provide 'siren-core-editor)
;;; siren-core-editor.el ends here

View File

@@ -25,6 +25,7 @@
(require 'siren-display-indentation)
(require 'siren-display-line-numbers)
(require 'siren-fci)
(require 'siren-folding)
(require 'siren-helm-command)
(require 'siren-highlight-symbol)
(require 'siren-ido)
@@ -50,7 +51,6 @@
(require 'siren-dired)
(require 'siren-direx)
(require 'siren-dumb-jump)
(require 'siren-folding)
(require 'siren-git-link)
(require 'siren-helm)
(require 'siren-helm-ag)

View File

@@ -0,0 +1,50 @@
;;; siren-folding.el --- jimeh's Emacs Siren: folding configuration.
;;; Commentary:
;; Basic configuration for folding code.
;;; Code:
(use-package hideshow
:ensure nil ;; loaded from emacs built-ins
:demand
:bind
("C-=" . siren-folding-toggle-selective-display)
("C-c C-h" . siren-folding-toggle)
:init
(defun siren-folding (&optional arg)
"Activate or deactivate code folding.
Optional ARG is passed directly to mode toggle function."
(hs-minor-mode (or arg t))
(hideshowvis-minor-mode (or arg t)))
(defun siren-folding-toggle (column)
"Toggle hiding/showing blocks via hs-mode.
Borrowed from: http://www.emacswiki.org/emacs/HideShow"
(interactive "P")
(if hs-minor-mode
(if (condition-case nil
(hs-toggle-hiding)
(error t))
(hs-show-all))
(siren-folding-toggle-selective-display column)))
(defun siren-folding-toggle-selective-display (column)
"Helper function for `siren-folding-toggle'."
(interactive "P")
(set-selective-display
(or column
(unless selective-display
(1+ (current-column)))))))
(use-package hideshowvis
:ensure nil ;; loaded from vendor
:demand)
(provide 'siren-folding)
;;; siren-folding.el ends here

View File

@@ -6,6 +6,7 @@
;;; Code:
(require 'siren-folding)
(require 'siren-projectile)
(use-package dart-mode
@@ -22,10 +23,9 @@
:init
(defun siren-dart-mode-setup ()
(company-mode +1)
(lsp)
(highlight-symbol-mode -1)
(hs-minor-mode 1)
(hideshowvis-enable)
(lsp)
(siren-folding)
(subword-mode +1))
(with-eval-after-load "projectile"

View File

@@ -39,8 +39,7 @@
(highlight-symbol-mode -1)
(company-mode +1)
(lsp)
(hs-minor-mode 1)
(hideshowvis-enable)
(siren-folding)
(subword-mode +1))
:config

View File

@@ -6,8 +6,8 @@
;;; Code:
(require 'siren-prettier-js)
(require 'siren-folding)
(require 'siren-prettier-js)
(use-package js-mode
:ensure nil ;; loaded from emacs built-ins
@@ -15,6 +15,10 @@
"\\.js\\'"
"\\.pac\\'"
:bind (:map js-mode-map
("C-j" . newline-and-indent)
("C-c C-h" . siren-toggle-hiding))
:hook
(js-mode . siren-js-mode-setup)
@@ -27,15 +31,10 @@
tab-width width))
(prettier-js-mode)
(company-mode +1)
(company-mode)
(lsp)
(subword-mode +1)
(hs-minor-mode 1)
(hideshowvis-enable)
(let ((map js-mode-map))
(define-key map (kbd "C-j") 'newline-and-indent)
(define-key map (kbd "C-c C-h") 'siren-toggle-hiding))))
(subword-mode)
(siren-folding)))
(provide 'siren-js)
;;; siren-js.el ends here

View File

@@ -15,7 +15,7 @@
:bind (:map json-mode-map
("C-j" . newline-and-indent)
("C-c C-h" . siren-toggle-hiding))
("C-c C-h" . siren-folding-toggle))
:hook
(json-mode . siren-json-mode-setup)

View File

@@ -6,6 +6,7 @@
;;; Code:
(require 'siren-folding)
(require 'siren-prettier-js)
(use-package rjsx-mode
@@ -18,8 +19,7 @@
(prettier-js-mode +1)
(company-mode +1)
(subword-mode +1)
(hs-minor-mode +1)
(hideshowvis-enable)))
(siren-folding)))
(provide 'siren-jsx)
;;; siren-jsx.el ends here

View File

@@ -20,8 +20,7 @@
(rainbow-mode +1)
(company-mode +1)
(subword-mode +1)
(hs-minor-mode 1)
(hideshowvis-enable)))
(siren-folding)))
(provide 'siren-php)
;;; siren-php.el ends here

View File

@@ -59,8 +59,7 @@
tab-width 2)
(company-mode +1)
(hs-minor-mode 1)
(hideshowvis-enable)
(siren-folding)
(subword-mode +1))
:config

View File

@@ -25,8 +25,7 @@
(company-mode +1)
(lsp-mode)
(hs-minor-mode 1)
(hideshowvis-enable)
(siren-folding)
(subword-mode +1)))
(use-package cargo

View File

@@ -7,8 +7,8 @@
;;; Code:
(require 'siren-company)
(require 'siren-folding)
(require 'siren-flycheck)
(require 'siren-folding)
(require 'siren-prettier-js)
(require 'siren-web-mode)
@@ -16,8 +16,11 @@
:hook
(typescript-mode . siren-typescript-mode-setup)
:init
:bind (:map typescript-mode-map
("C-j" . newline-and-indent)
("C-c C-h" . siren-folding-toggle))
:init
(defun siren-typescript-mode-setup ()
(let ((width 2))
(setq typescript-indent-level width
@@ -27,12 +30,7 @@
(company-mode +1)
(lsp)
(subword-mode +1)
(hs-minor-mode 1)
(hideshowvis-enable)
(let ((map typescript-mode-map))
(define-key map (kbd "C-j") 'newline-and-indent)
(define-key map (kbd "C-c C-h") 'siren-toggle-hiding))))
(siren-folding)))
(use-package tide
:hook

View File

@@ -18,7 +18,7 @@
:bind (:map web-mode-map
("C-j" . newline-and-indent)
("C-c C-h" . siren-toggle-hiding))
("C-c C-h" . siren-folding-toggle))
:hook
(web-mode . siren-web-mode-setup)
@@ -37,8 +37,7 @@
(company-mode +1)
(fci-mode -1)
(hideshowvis-enable)
(hs-minor-mode +1)
(siren-folding)
(subword-mode +1)))
(use-package web-beautify

View File

@@ -1,38 +0,0 @@
;;; siren-folding.el --- jimeh's Emacs Siren: folding configuration.
;;; Commentary:
;; Basic configuration for folding code.
;;; Code:
(use-package hideshowvis
:ensure nil ;; loaded from vendor
)
(defun siren-toggle-hiding (column)
"Toggle hiding/showing blocks via hs-mode.
Borrowed from: http://www.emacswiki.org/emacs/HideShow"
(interactive "P")
(if hs-minor-mode
(if (condition-case nil
(hs-toggle-hiding)
(error t))
(hs-show-all))
(siren-toggle-selective-display column)))
(defun siren-toggle-selective-display (column)
"Helper function for `siren-toggle-hiding'."
(interactive "P")
(set-selective-display
(or column
(unless selective-display
(1+ (current-column))))))
;; Keybindings
(global-set-key (kbd "C-=") 'siren-toggle-selective-display)
(global-set-key (kbd "C-c C-h") 'siren-toggle-hiding)
(provide 'siren-folding)
;;; siren-folding.el ends here

View File

@@ -8,6 +8,7 @@
(require 'siren-all-the-icons)
(require 'siren-doom-modeline)
(require 'siren-folding)
(use-package doom-themes
:ensure t

View File

@@ -8,6 +8,7 @@
(require 'siren-all-the-icons)
(require 'siren-doom-modeline)
(require 'siren-folding)
(use-package doom-themes
:ensure t

View File

@@ -8,6 +8,7 @@
(require 'siren-all-the-icons)
(require 'siren-doom-modeline)
(require 'siren-folding)
(use-package doom-themes
:ensure t

View File

@@ -8,6 +8,7 @@
(require 'siren-all-the-icons)
(require 'siren-doom-modeline)
(require 'siren-folding)
(use-package doom-themes
:ensure t

View File

@@ -8,6 +8,7 @@
(require 'siren-all-the-icons)
(require 'siren-doom-modeline)
(require 'siren-folding)
(use-package doom-themes
:ensure t