commit - ee48b410599704fcf8c18024e2cf1cda7b11b5f5
commit + adbfb8511022a57d21c5a3df51d87a8d3f95527a
blob - d6069c4806c43d213fc995249b1ac084f4fb56c9
blob + 7529e50427c2d21131901e61d2d4cc1a43e3ed5e
--- sndio.el
+++ sndio.el
(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)
(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.")
(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."
(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