~ruther/nixos-config

82c41cc2f714c928b9651e785ea547432be313de — Frantisek Bohacek 8 months ago d9b9328
fix: add missing emacs-anywhere.el
1 files changed, 51 insertions(+), 0 deletions(-)

A home/modules/profiles/desktop/dwl/emacs-anywhere.el
A home/modules/profiles/desktop/dwl/emacs-anywhere.el => home/modules/profiles/desktop/dwl/emacs-anywhere.el +51 -0
@@ 0,0 1,51 @@
(require 'server)

(server-eval-at "server" '(let
                              ((frame (make-frame-command))
                               (buffer (generate-new-buffer "*emacs-anywhere*")))

  (defun my-emacs-anywhere-capture ()
    "Open a buffer called *emacs-anywhere*, wait for user input, and return the buffer content when C-c C-c is pressed."
    (interactive)
    (let ((buffer-name "*emacs-anywhere*"))
      (with-current-buffer (get-buffer-create buffer-name)
        (erase-buffer)
        (local-set-key (kbd "C-c C-c") 'my-emacs-anywhere-finish-capture)
        (local-set-key (kbd "C-c C-k") 'my-emacs-anywhere-abort-capture)
        (message "Type your input. Press C-c C-c to finish.")
        (switch-to-buffer buffer-name))))


  (defvar my-emacs-anywhere-content nil
    "Variable to store the content captured from *emacs-anywhere* buffer.")

  (defun my-emacs-anywhere-finish-capture ()
    "Finish capturing input and return the content of the *emacs-anywhere* buffer."
    (interactive)
    (let ((content (buffer-string)))
      (setq my-emacs-anywhere-content content)
      (kill-buffer buffer)
      (delete-frame frame)))

  (defun my-emacs-anywhere-abort-capture ()
    "Finish capturing input and return the content of the *emacs-anywhere* buffer."
    (interactive)
    (setq my-emacs-anywhere-content t)
    (kill-buffer buffer)
    (delete-frame frame))

  (select-frame frame)
  (switch-to-buffer buffer)
  (erase-buffer)
  (my-emacs-anywhere-capture)
  (setq my-emacs-anywhere-content nil)
  t))

(while (let ((my-emacs-anywhere-content (server-eval-at "server" 'my-emacs-anywhere-content)))
         (or (not my-emacs-anywhere-content)
             (and
                  (with-temp-buffer
                    (insert my-emacs-anywhere-content)
                    (write-region (point-min) (point-max) "/dev/stdout"))
                   f)))
  (sit-for 0.1))

Do not follow this link