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

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

[nongnu] elpa/racket-mode 3a9675d2e4 1/2: Simplify use of paredit-space-


From: ELPA Syncer
Subject: [nongnu] elpa/racket-mode 3a9675d2e4 1/2: Simplify use of paredit-space-for-delimiter-predicates
Date: Tue, 17 Dec 2024 16:02:26 -0500 (EST)

branch: elpa/racket-mode
commit 3a9675d2e447d7d844c4a40adb91d9c59b250319
Author: Greg Hendershott <git@greghendershott.com>
Commit: Greg Hendershott <git@greghendershott.com>

    Simplify use of paredit-space-for-delimiter-predicates
    
    Define a single predicate function, and, set it only buffer-local.
    
    (Previously we set the hook globally, which in hindsight seems too
    "heavy", even though the functions checked that they were running in a
    Racket Mode buffer.)
---
 racket-hash-lang.el |  4 +++
 racket-mode.el      |  6 +++-
 racket-parens.el    | 98 +++++++++++++++++++++--------------------------------
 racket-repl.el      |  6 +++-
 4 files changed, 52 insertions(+), 62 deletions(-)

diff --git a/racket-hash-lang.el b/racket-hash-lang.el
index 16be358f58..f890fa5617 100644
--- a/racket-hash-lang.el
+++ b/racket-hash-lang.el
@@ -262,6 +262,10 @@ A discussion of the information provided by a Racket 
language:
   (setq-local imenu-create-index-function nil)
   (setq-local completion-at-point-functions nil) ;rely on racket-xp-mode
   (setq racket-submodules-at-point-function nil) ;might change in on-new-lang
+  (when (boundp 'paredit-space-for-delimiter-predicates)
+    (add-hook 'paredit-space-for-delimiter-predicates
+              #'racket--paredit-space-for-delimiter-predicate
+              nil t))
   ;; Create back end hash-lang object.
   ;;
   ;; On the one hand, `racket--cmd/await' would be simpler to use
diff --git a/racket-mode.el b/racket-mode.el
index d9c7d40506..c43ca6bcf2 100644
--- a/racket-mode.el
+++ b/racket-mode.el
@@ -200,7 +200,11 @@
   (add-hook 'xref-backend-functions
             #'racket-mode-xref-backend-function
             nil t)
-  (setq racket-submodules-at-point-function 
#'racket-submodules-at-point-text-sexp))
+  (setq racket-submodules-at-point-function 
#'racket-submodules-at-point-text-sexp)
+  (when (boundp 'paredit-space-for-delimiter-predicates)
+    (add-hook 'paredit-space-for-delimiter-predicates
+              #'racket--paredit-space-for-delimiter-predicate
+              nil t)))
 
 ;;;###autoload
 (progn
diff --git a/racket-parens.el b/racket-parens.el
index 3eb61520a2..cbe93822cb 100644
--- a/racket-parens.el
+++ b/racket-parens.el
@@ -1,6 +1,6 @@
 ;;; racket-parens.el -*- lexical-binding: t; -*-
 
-;; Copyright (c) 2013-2021 by Greg Hendershott.
+;; Copyright (c) 2013-2024 by Greg Hendershott.
 ;; Portions Copyright (C) 1985-1986, 1999-2013 Free Software Foundation, Inc.
 
 ;; Author: Greg Hendershott
@@ -70,61 +70,49 @@ This is handy if you're not yet using something like
 (put 'racket-insert-closing 'delete-selection
      #'racket--electric-pair-mode-not-active)
 
-;;; paredit and reader literals
-
-(defun racket--reader-literal-paredit-space-for-delimiter-predicate (endp 
_delimiter)
-  "`paredit-mode' shouldn't insert space beteween # and open delimiters.
-
-Examples: #() #2() #fl() #hasheq  etc.
-
-This function is a suitable element for the list variable
-`paredit-space-for-delimiter-predicates'."
-  (if (and (racket--mode-edits-racket-p)
-           (not endp))
-      (not (looking-back (rx ?# (* (or (syntax word)
-                                       (syntax symbol)
-                                       (syntax punctuation))))
-                         nil))
-    t))
-
-(eval-after-load 'paredit
-  '(add-hook 'paredit-space-for-delimiter-predicates
-             #'racket--reader-literal-paredit-space-for-delimiter-predicate))
-
-;;; paredit and at-expressions
+(defun racket--open-paren (back-func)
+  "Use BACK-FUNC to find an opening ( [ or { if any.
+BACK-FUNC should be something like #\\='backward-sexp or 
#\\='backward-up-list."
+  (save-excursion
+    (ignore-errors
+      (funcall back-func)
+      (let ((ch (char-after)))
+        (and (eq ?\( (char-syntax ch))
+             ch)))))
 
-(defun racket--at-expression-paredit-space-for-delimiter-predicate (endp 
delimiter)
-  "`paredit-mode' shouldn't insert space before [ or { in Racket 
at-expressions.
+;;; paredit spaces in reader literals and at-expressions
 
-This function is a suitable element for the list variable
-`paredit-space-for-delimiter-predicates'."
+(defun racket--paredit-space-for-delimiter-predicate (endp delimiter)
+  "A value for hook `paredit-space-for-delimiter-predicates'."
   (if (and (racket--mode-edits-racket-p)
            (not endp))
-      (not (or
-            ;; @foo[ @foo{
-            (and (memq delimiter '(?\[ ?\{))
-                 (looking-back (rx ?@ (* (or (syntax word)
-                                             (syntax symbol)
-                                             (syntax punctuation))))
-                               nil))
-            ;; @foo[]{
-            (and (eq delimiter ?\{)
-                 (looking-back (rx ?@ (* (or (syntax word)
-                                             (syntax symbol)
-                                             (syntax punctuation)))
-                                   ?\[
-                                   (* (or (syntax word)
-                                          (syntax symbol)
-                                          (syntax punctuation)))
-                                   ?\])
-                               nil))))
+      (not
+       (or
+        ;; reader literal: e.g. #(), #hasheq(), #"bstr", #px".*"
+        (looking-back (rx ?# (* (or (syntax word)
+                                    (syntax symbol)
+                                    (syntax punctuation))))
+                      nil)
+        ;; at-expression: @foo[ @foo{
+        (and (memq delimiter '(?\[ ?\{))
+             (looking-back (rx ?@ (* (or (syntax word)
+                                         (syntax symbol)
+                                         (syntax punctuation))))
+                           nil))
+        ;; at-expression: @foo[]{
+        (and (eq delimiter ?\{)
+             (looking-back (rx ?@ (* (or (syntax word)
+                                         (syntax symbol)
+                                         (syntax punctuation)))
+                               ?\[
+                               (* (or (syntax word)
+                                      (syntax symbol)
+                                      (syntax punctuation)))
+                               ?\])
+                           nil))
+        ))
     t))
 
-(eval-after-load 'paredit
-  '(add-hook 'paredit-space-for-delimiter-predicates
-             #'racket--at-expression-paredit-space-for-delimiter-predicate))
-
-
 ;;; Cycle paren shapes
 
 (defconst racket--paren-shapes
@@ -152,16 +140,6 @@ This function is a suitable element for the list variable
       (_
        (user-error "Don't know that paren shape")))))
 
-(defun racket--open-paren (back-func)
-  "Use BACK-FUNC to find an opening ( [ or { if any.
-BACK-FUNC should be something like #\\='backward-sexp or 
#\\='backward-up-list."
-  (save-excursion
-    (ignore-errors
-      (funcall back-func)
-      (let ((ch (char-after)))
-        (and (eq ?\( (char-syntax ch))
-             ch)))))
-
 (provide 'racket-parens)
 
 ;; racket-parens.el ends here
diff --git a/racket-repl.el b/racket-repl.el
index e569423994..8a6dbbcdf8 100644
--- a/racket-repl.el
+++ b/racket-repl.el
@@ -1509,7 +1509,11 @@ identifier bindings and modules from the REPL's 
namespace.
   (add-hook 'kill-emacs-hook #'racket-repl-write-all-histories nil t)
   (add-hook 'xref-backend-functions #'racket-repl-xref-backend-function nil t)
   (add-to-list 'semantic-symref-filepattern-alist
-               '(racket-repl-mode "*.rkt" "*.rktd" "*.rktl")))
+               '(racket-repl-mode "*.rkt" "*.rktd" "*.rktl"))
+  (when (boundp 'paredit-space-for-delimiter-predicates)
+    (add-hook 'paredit-space-for-delimiter-predicates
+              #'racket--paredit-space-for-delimiter-predicate
+              nil t)))
 
 (defun racket-repl-write-all-histories ()
   "Call `racket-repl-write-history' for all `racket-repl-mode' buffers.



reply via email to

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