emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[elpa] scratch/hyperbole fc7e33b5e5 11/16: * hui-select.el: Fix a few wa


From: Stefan Monnier
Subject: [elpa] scratch/hyperbole fc7e33b5e5 11/16: * hui-select.el: Fix a few warnings and improve some docstrings
Date: Mon, 19 Jun 2023 22:36:45 -0400 (EDT)

branch: scratch/hyperbole
commit fc7e33b5e53c2d059c6d302351f8cb3c5657c5a8
Author: Stefan Monnier <monnier@iro.umontreal.ca>
Commit: Stefan Monnier <monnier@iro.umontreal.ca>

    * 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.
---
 hui-select.el | 62 ++++++++++++++++++++++++++++++-----------------------------
 1 file changed, 32 insertions(+), 30 deletions(-)

diff --git a/hui-select.el b/hui-select.el
index c807d8ced7..9633c61e21 100644
--- a/hui-select.el
+++ b/hui-select.el
@@ -169,7 +169,7 @@ Use for language major modes."
     (Info-mode "[^ \t\n]")
     (outline-mode "[^*]")
     (text-mode  "[^ \t\n*]"))
-  "List of (major-mode . non-terminator-line-regexp) elements.
+  "List of (MAJOR-MODE . NON-TERMINATOR-LINE-REGEXP) elements.
 Used to avoid early dropoff when marking indented code.")
 
 (defvar hui-select-indent-end-regexp-alist
@@ -185,7 +185,7 @@ Used to avoid early dropoff when marking indented code.")
     (indented-text-mode "[ \t]*$")
     (Info-mode "[ \t]*$")
     (text-mode  "[ \t]*$"))
-  "List of (major-mode . terminator-line-regexp) elements.
+  "List of (MAJOR-MODE . TERMINATOR-LINE-REGEXP) elements.
 Used to include a final line when marking indented code.")
 
 (defcustom hui-select-char-p nil
@@ -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'."
@@ -472,7 +474,7 @@ displayed in the minibuffer."
 ;;;###autoload
 (defun hui-select-goto-matching-tag ()
   "Move point to start of the tag paired with closest tag point is at or 
precedes.
-Enabled in major modes in `hui-select-markup-modes.  Returns t if
+Enabled in major modes in `hui-select-markup-modes'.  Returns t if
 point is moved, else nil.  Signals an error if no tag is found
 following point or if the closing tag does not have a `>'
 terminator character."



reply via email to

[Prev in Thread] Current Thread [Next in Thread]