aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--oni-scheme.el35
1 files changed, 16 insertions, 19 deletions
diff --git a/oni-scheme.el b/oni-scheme.el
index 6c48414..baf71d9 100644
--- a/oni-scheme.el
+++ b/oni-scheme.el
@@ -4,7 +4,7 @@
;; Author: Tom Willemse <tom@ryuslash.org>
;; Keywords: local
-;; Version: 2025.0602.150536
+;; Version: 2026.0714.000130
;; Package-Requires: (oni-company oni-paredit rainbow-delimiters geiser geiser-guile)
;; This program is free software; you can redistribute it and/or modify
@@ -50,17 +50,16 @@
(make-local-variable 'minor-mode-overriding-map-alist)
(push `(paredit-mode . ,newmap) minor-mode-overriding-map-alist)))
+(defconst +oni-scheme-import-display+ " …"
+ "What to display instead of the scheme imports.")
+
(defun oni-scheme-toggle-import-display ()
(interactive)
- (let ((start (get-text-property (point) 'oni-scheme-import-start))
- (end (get-text-property (point) 'oni-scheme-import-end))
- (visiblep (not (string= " ..." (get-text-property (point) 'display)))))
- (with-silent-modifications
- (unwind-protect
- (progn
- (buffer-disable-undo)
- (put-text-property start end 'display (if visiblep " ..." nil)))
- (buffer-enable-undo)))))
+ (let* ((overlay (seq-find (lambda (o) (overlay-get o 'oni-scheme-hidden-imports))
+ (overlays-at (point))))
+ (visiblep (not (string= +oni-scheme-import-display+
+ (overlay-get overlay 'display)))))
+ (overlay-put overlay 'display (if visiblep +oni-scheme-import-display+ nil))))
(defun oni-scheme-hide-guile-imports ()
"Hide the imports in ‘define-module’."
@@ -72,15 +71,13 @@
(setq start (line-end-position))
(forward-sexp)
(setq end (1- (point)))
- (with-silent-modifications
- (unwind-protect
- (progn
- (buffer-disable-undo)
- (set-text-properties start end `(display " ..."
- keymap ,oni-scheme-hidden-imports-keymap
- oni-scheme-import-start ,start
- oni-scheme-import-end ,end)))
- (buffer-enable-undo)))))))
+ (dolist (o (overlays-in start end))
+ (when (overlay-get o 'oni-scheme-hidden-imports)
+ (delete-overlay o)))
+ (let ((overlay (make-overlay start end)))
+ (overlay-put overlay 'oni-scheme-hidden-imports t)
+ (overlay-put overlay 'display +oni-scheme-import-display+)
+ (overlay-put overlay 'keymap oni-scheme-hidden-imports-keymap))))))
(add-hook 'scheme-mode-hook 'company-mode)
(add-hook 'scheme-mode-hook 'display-fill-column-indicator-mode)