diff options
| author | Stefan Monnier <monnier@iro.umontreal.ca> | 2023-05-01 23:09:49 -0400 |
|---|---|---|
| committer | Stefan Monnier <monnier@iro.umontreal.ca> | 2023-06-27 17:31:00 -0400 |
| commit | 202a3f940481b537ab3b8273a166616d5e2b4bb9 (patch) | |
| tree | 70c379e3f69f23ab616d9449bc1dcbb0bf8c6114 | |
| parent | f00a0feb2e31be5474e56f5fac0dcae3110dcfe6 (diff) | |
* hui-select.el: Fix a few warnings and improve some docstrings
(hui-select-initialize): Use `dolist`; let-bind
vars rather than just `setq`ing them; use closures.
(hui-select-goto-matching-tag): Fix markup.
(hui-select-indent-non-end-regexp-alist)
(hui-select-indent-end-regexp-alist): Use conventional markup for metavars.
| -rw-r--r-- | hui-select.el | 56 |
1 files changed, 29 insertions, 27 deletions
diff --git a/hui-select.el b/hui-select.el index 4880e46..8624c33 100644 --- a/hui-select.el +++ b/hui-select.el @@ -366,33 +366,35 @@ Also, add language-specific syntax setups to aid in thing selection." ;; ;; Make tag begin and end delimiters act like grouping characters, ;; for easy syntactical selection of tags. - (let (hook-sym mode-str) - (mapc (lambda (mode) - (setq mode-str (symbol-name mode) - hook-sym (intern (concat mode-str "-hook")) - syntax-table-sym (intern (concat mode-str "-syntax-table")) - keymap-sym (intern (concat mode-str "-map"))) - (var:add-and-run-hook hook-sym - `(lambda () - (let ((syntax-table (symbol-value ',syntax-table-sym)) - (keymap (symbol-value ',keymap-sym))) - (modify-syntax-entry ?\< "(>" syntax-table) - (modify-syntax-entry ?\> ")<" syntax-table) - (modify-syntax-entry ?\{ "(}" syntax-table) - (modify-syntax-entry ?\} "){" syntax-table) - (modify-syntax-entry ?\" "\"" syntax-table) - (modify-syntax-entry ?= "." syntax-table) - (modify-syntax-entry ?. "_" syntax-table) - (setq sentence-end "\\([^ \t\n\r>]<\\|>\\(<[^>]*>\\)*\\|[.?!][]\"')}]*\\($\\| $\\|\t\\| \\)\\)[ \t\n]*") - (define-key keymap "\C-c." 'hui-select-goto-matching-tag)))) - (unless (eq mode 'web-mode) - (var:add-and-run-hook - hook-sym (lambda () - (make-local-variable 'comment-start) - (make-local-variable 'comment-end) - (setq comment-start "<!--" comment-end "-->") - (make-local-variable 'sentence-end))))) - hui-select-markup-modes))) + (dolist (mode hui-select-markup-modes) + (let* ((mode-str (symbol-name mode)) + (hook-sym (intern (concat mode-str "-hook"))) + (syntax-table-sym (intern (concat mode-str "-syntax-table"))) + (keymap-sym (intern (concat mode-str "-map")))) + ;; FIXME: Don't add lambdas to hooks. Instead give names to + ;; those functions and add the symbol to the hook. Makes it + ;; easier/possible to remove/update the function on the hook. + (var:add-and-run-hook hook-sym + (lambda () + (let ((syntax-table (symbol-value syntax-table-sym)) + (keymap (symbol-value keymap-sym))) + (modify-syntax-entry ?\< "(>" syntax-table) + (modify-syntax-entry ?\> ")<" syntax-table) + (modify-syntax-entry ?\{ "(}" syntax-table) + (modify-syntax-entry ?\} "){" syntax-table) + (modify-syntax-entry ?\" "\"" syntax-table) + (modify-syntax-entry ?= "." syntax-table) + (modify-syntax-entry ?. "_" syntax-table) + (setq sentence-end "\\([^ \t\n\r>]<\\|>\\(<[^>]*>\\)*\\|[.?!][]\"')}]*\\($\\| $\\|\t\\| \\)\\)[ \t\n]*") + (define-key keymap "\C-c." #'hui-select-goto-matching-tag)))) + (unless (eq mode 'web-mode) + (var:add-and-run-hook + hook-sym (lambda () + ;; FIXME: Why not rely on the major mode's own settings? + (make-local-variable 'comment-end) ;FIXME: Why? + (setq-local comment-start "<!--" comment-end "-->") + (make-local-variable 'sentence-end) ;FIXME: Why? + )))))) (defun hui-select-get-region-boundaries () "Return the (START . END) boundaries of region for `hui-select-thing'." |
