~abcdw/rde-devel

rde: Add emacs-dmenu command. v1 PROPOSED

Nicolas Graves: 1
 rde: Add emacs-dmenu command.

 1 files changed, 34 insertions(+), 2 deletions(-)
Export patchset (mbox)
How do I use this?

Copy & paste the following snippet into your terminal to import this patchset into git:

curl -s https://lists.sr.ht/~abcdw/rde-devel/patches/39843/mbox | git am -3
Learn more about email & git

[PATCH] rde: Add emacs-dmenu command. Export this patch

---
 src/rde/features/emacs.scm | 36 ++++++++++++++++++++++++++++++++++--
 1 file changed, 34 insertions(+), 2 deletions(-)

diff --git a/src/rde/features/emacs.scm b/src/rde/features/emacs.scm
index baa01ca..88465e0 100644
--- a/src/rde/features/emacs.scm
+++ b/src/rde/features/emacs.scm
@@ -327,6 +327,37 @@ environment outside of Guix Home."
                           "--no-splash"
                           (cdr (command-line)))))

  ;; Emacs and emacsclient don't handle stdin properly, in the case they
  ;; should be used as dmenu. This tiny guile+emacs script behaves like dmenu.
  (define emacs-dmenu
    (program-file
     "emacs-dmenu"
     #~(begin
         (use-modules
          (ice-9 textual-ports)
          (ice-9 popen))
         (let* ((raw-input
                 (string-drop-right (get-string-all (current-input-port)) 1))
                (port (open-input-pipe
                       (string-append
                        #$emacs-client-create-frame
                        " --eval \""
                        "(progn \
(set-frame-name \\\"dynamic-menu - Emacs Client\\\") \
(let ((vertico-count 10)) \
        (completing-read \\\"Select: \\\" \
                         (split-string \\\"" raw-input "\\\" \
                                       \\\"\n\\\"))))\""
                         " --eval \"(delete-frame (selected-frame))\""
                         " -F "
                         "\"((minibuffer . only) \
                                 (width . 120) \
                                 (height . 11))\"")))
           (selected
            (string-drop (string-drop-right (get-string-all port) 2) 1)))
         (close-port port)
         (format #t "~a\n" selected)))))

  (define emacs-application-launcher
    (emacs-minibuffer-program
     emacs-client-create-frame "application-launcher" "Application Launcher"
@@ -573,7 +604,8 @@ It can contain settings not yet moved to separate features."
       (simple-service 'emacs-set-default-editor
                       home-environment-variables-service-type
                       `(("ALTERNATE_EDITOR" . ,emacs-editor)
                         ("VISUAL" . ,emacs-client-no-wait)))
                         ("VISUAL" . ,emacs-client-no-wait)
                         ("MENU" . ,emacs-dmenu)))
       (when (get-value 'sway config)
         (simple-service
          'emacs-update-environment-variables-on-sway-start
@@ -594,7 +626,7 @@ It can contain settings not yet moved to separate features."
            (make-feature-values
             standalone-minibuffer-height
             emacs
             emacs-editor emacs-client
             emacs-editor emacs-client emacs-dmenu
             emacs-client-create-frame
             emacs-client-no-wait
             emacs-configure-rde-keymaps
-- 
2.39.2