commit adbfb8511022a57d21c5a3df51d87a8d3f95527a from: Omar Polo date: Tue Nov 09 22:50:42 2021 UTC add a popup window for quicker interaction commit - ee48b410599704fcf8c18024e2cf1cda7b11b5f5 commit + adbfb8511022a57d21c5a3df51d87a8d3f95527a blob - d6069c4806c43d213fc995249b1ac084f4fb56c9 blob + 7529e50427c2d21131901e61d2d4cc1a43e3ed5e --- sndio.el +++ sndio.el @@ -22,6 +22,9 @@ (defvar sndio-step 0.02 "Step for `sndio-increase' and `sndio-decrease'.") +(defvar sndio--window nil + "The sndio window.") + (defvar sndio-mode-map (let ((m (make-sparse-keymap))) (define-key m (kbd "n") #'forward-line) @@ -31,6 +34,7 @@ (define-key m (kbd "m") #'sndio-mute) (define-key m (kbd "t") #'sndio-toggle) (define-key m (kbd "g") #'sndio-update) + (define-key m (kbd "q") #'sndio-quit) m) "Keymap for sndio.") @@ -99,6 +103,15 @@ (when-let (val (sndio--run "-n" (concat x "=!"))) (sndio--update-value val)))) +(defun sndio-quit () + "Quits sndio. +Call `delete-window' when the sndio popup window is open or +`quit-window' otherwise." + (interactive) + (if (window-live-p sndio--window) + (delete-window) + (quit-window))) + ;;;###autoload (defun sndio () "Launch sndio." @@ -106,5 +119,31 @@ (switch-to-buffer "*sndio*") (sndio-mode)) +(defun sndio-win-open () + "Open an sndio window at the bottom of the frame for quick editing." + (interactive) + (unless (window-live-p sndio--window) + (setq sndio--window + (select-window + (let ((ignore-window-parameters t)) + (split-window (frame-root-window) + -1 + 'below)) + 'norecord)) + (switch-to-buffer (get-buffer-create "*sndio-quick*") + 'norecord) + (if (derived-mode-p 'sndio-mode) + (sndio-update) + (sndio-mode)) + (setq mode-line-format nil + header-line-format nil + tab-line-format nil) + (set-window-hscroll sndio--window 0) + (set-window-dedicated-p sndio--window t) + (select-window sndio--window 'norecord) + (let ((window-resize-pixelwise t) + (window-size-fixed)) + (fit-window-to-buffer sndio--window nil nil 1)))) + (provide 'sndio) ;;; sndio.el ends here