geiser-users
[Top][All Lists]
Advanced

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

Re: [PATCH] Add geiser-repl-superparen-mode minor mode.


From: Jose A. Ortega Ruiz
Subject: Re: [PATCH] Add geiser-repl-superparen-mode minor mode.
Date: Fri, 22 Sep 2023 18:10:54 +0100
User-agent: Gnus/5.13 (Gnus v5.13)

Looks good to me. Applied. Many thanks!

jao

On Fri, Sep 22 2023, Antero Mejr via wrote:

> Please use this v2 patch and ignore the previous one, it has typos.
>
> From 8ce96a1d483bf936594f45a204ca58d97c969393 Mon Sep 17 00:00:00 2001
> From: Antero Mejr <antero@mailbox.org>
> Date: Fri, 22 Sep 2023 15:09:19 +0000
> Subject: [PATCH v2] Add geiser-repl-superparen-mode minor mode.
>
> Disabled by default. Adds new custom variables
> "geiser-repl-superparen-character" and "geiser-repl-superparen-mode-p".
> ---
>  elisp/geiser-mode.el |  2 ++
>  elisp/geiser-repl.el | 47 ++++++++++++++++++++++++++++++++++++++++++++
>  2 files changed, 49 insertions(+)
>
> diff --git a/elisp/geiser-mode.el b/elisp/geiser-mode.el
> index ad2e419..72efa29 100644
> --- a/elisp/geiser-mode.el
> +++ b/elisp/geiser-mode.el
> @@ -330,6 +330,8 @@ With prefix, try to enter the current buffer's module."
>        (mode "Autodoc mode" ("\C-c\C-d\C-a" "\C-c\C-da") geiser-autodoc-mode)
>        (mode "Autoeval mode" ("\C-c\C-d\C-e" "\C-c\C-de")
>              geiser-repl-autoeval-mode)
> +      (mode "Superparen mode" ("\C-c\C-d\C-s" "\C-c\C-ds")
> +            geiser-repl-superparen-mode)
>        --
>        ("Compile buffer" "\C-c\C-k" geiser-compile-current-buffer)
>        ("Switch to REPL" "\C-c\C-z" geiser-mode-switch-to-repl)
> diff --git a/elisp/geiser-repl.el b/elisp/geiser-repl.el
> index a0c4b44..5f2743e 100644
> --- a/elisp/geiser-repl.el
> +++ b/elisp/geiser-repl.el
> @@ -227,6 +227,14 @@ See also `geiser-repl-startup-hook'."
>    "Whether `geiser-repl-autoeval-mode' gets enabled by default in REPL 
> buffers."
>    :type 'boolean)
>  
> +(geiser-custom--defcustom geiser-repl-superparen-mode-p nil
> +  "Whether `geiser-repl-superparen-mode' gets enabled by default in REPL 
> buffers."
> +  :type 'boolean)
> +
> +(geiser-custom--defcustom geiser-repl-superparen-character ?\]
> +  "The character that represents a closing super parentheses."
> +  :type 'character)
> +
>  (geiser-custom--defface repl-input
>    'comint-highlight-input geiser-repl "evaluated input highlighting")
>  
> @@ -834,6 +842,41 @@ This mode may cause issues with structural editing modes 
> such as paredit."
>      (message "Geiser Autoeval %s"
>               (if geiser-repl-autoeval-mode "enabled" "disabled"))))
>  
> +
> +;;; geiser-repl-superparen-mode minor mode:
> +
> +(defun geiser-repl--superparen-function ()
> +  (if (char-equal (char-before) geiser-repl-superparen-character)
> +      (progn (delete-backward-char 1)
> +             (insert-char ?\) (geiser-repl--nesting-level)))))
> +
> +(defvar-local geiser-repl-superparen-mode-string " S"
> +  "Modeline indicator for geiser-repl-superparen-mode")
> +
> +(define-minor-mode geiser-repl-superparen-mode
> +  "Toggle the Geiser REPL's Superparen mode.
> +With no argument, this command toggles the mode.
> +Non-null prefix argument turns on the mode.
> +Null prefix argument turns off the mode.
> +
> +When Superparen mode is enabled, entering the `geiser-repl-superparen-char'
> +character, which is ']' by default, will close all parentheses of the 
> expression
> +currently being typed.
> +
> +This mode may cause issues with structural editing modes such as paredit."
> +  :init-value nil
> +  :lighter geiser-repl-superparen-mode-string
> +  :group 'geiser-repl
> +
> +  (if geiser-repl-superparen-mode
> +      (add-hook 'post-self-insert-hook #'geiser-repl--superparen-function 
> nil t)
> +    (remove-hook 'post-self-insert-hook #'geiser-repl--superparen-function 
> t))
> +  (when (called-interactively-p nil)
> +    (if geiser-repl-superparen-mode
> +        (message "Geiser Superparen enabled, using the %c character."
> +                 geiser-repl-superparen-character)
> +      (message "Geiser Superparen disabled."))))
> +
>  
>  ;;; geiser-repl mode:
>  
> @@ -985,6 +1028,8 @@ buffer."
>        (mode "Autodoc mode" ("\C-c\C-da" "\C-c\C-d\C-a") geiser-autodoc-mode)
>        (mode "Autoeval mode" ("\C-c\C-de" "\C-c\C-d\C-e")
>              geiser-repl-autoeval-mode)
> +      (mode "Superparen mode" ("\C-c\C-ds" "\C-c\C-d\C-s")
> +            geiser-repl-superparen-mode)
>        ("Symbol documentation" ("\C-c\C-dd" "\C-c\C-d\C-d")
>         geiser-doc-symbol-at-point
>         "Documentation for symbol at point" :enable (geiser--symbol-at-point))
> @@ -1041,6 +1086,8 @@ buffer."
>    (setq geiser-autodoc-mode-string "/E")
>    (when geiser-repl-autoeval-mode-p
>      (geiser-repl-autoeval-mode 1))
> +  (when geiser-repl-superparen-mode-p
> +    (geiser-repl-superparen-mode 1))
>  
>    ;; enabling compilation-shell-minor-mode without the annoying highlighter
>    (compilation-setup t))

-- 
Inglish iz issenshali a langwidje dhat, wen rittun fonetkli, iz
ilejibul tu netiv spikerz.
 -Peter Bleackley



reply via email to

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