SLY: Add sly-narrow-to-prompt.

master
Pierre Neidhardt 2021-01-22 21:16:22 +01:00
parent 0ee966dcb0
commit 38a8b40df2
2 changed files with 43 additions and 0 deletions

View File

@ -0,0 +1,41 @@
;; Requires `ambrevar/sly-end-of-prompt-p'.
(defun ambrevar/sly-prompt-begin-position ()
(cond
((and (get-text-property (point) 'sly-mrepl--prompt)
(not (get-text-property (1- (point)) 'sly-mrepl--prompt)))
(point))
((or (get-text-property (point) 'sly-mrepl--prompt)
(ambrevar/sly-end-of-prompt-p))
(previous-single-char-property-change
(point) 'sly-mrepl--prompt))
(t (previous-single-char-property-change
(previous-single-char-property-change
(point) 'sly-mrepl--prompt)
'sly-mrepl--prompt))))
(defun ambrevar/sly-prompt-end-position ()
(save-excursion
(goto-char (ambrevar/sly-prompt-begin-position))
(call-interactively #'sly-mrepl-next-prompt)
(point)))
(defun ambrevar/sly-output-end-position ()
(if (get-text-property (point) 'sly-mrepl--prompt)
(next-single-char-property-change
(next-single-char-property-change
(point) 'sly-mrepl--prompt)
'sly-mrepl--prompt)
(next-single-char-property-change
(point) 'sly-mrepl--prompt)))
(defun ambrevar/sly-narrow-to-prompt ()
"Narrow buffer to prompt at point."
(interactive)
(narrow-to-region
(ambrevar/sly-prompt-begin-position)
(ambrevar/sly-output-end-position)))
(define-key sly-mrepl-mode-map (kbd "C-x n d") 'ambrevar/sly-narrow-to-prompt)
(provive 'init-sly-narrow)

View File

@ -316,4 +316,6 @@ returns a string."
(advice-add 'sly-mrepl-next-prompt :override #'ambrevar/sly-mrepl-next-prompt)
(advice-add 'sly-mrepl-previous-prompt :override #'ambrevar/sly-mrepl-previous-prompt)
(require 'init-sly-narrow)
(provide 'init-sly)