oni-scheme: Add function that will try to hide imports
This commit is contained in:
parent
4dfff40b9c
commit
81386a5427
1 changed files with 39 additions and 1 deletions
|
@ -4,7 +4,7 @@
|
|||
|
||||
;; Author: Tom Willemse <tom@ryuslash.org>
|
||||
;; Keywords: local
|
||||
;; Version: 2024.1217.235035
|
||||
;; Version: 2025.0212.234333
|
||||
;; Package-Requires: (oni-company oni-paredit rainbow-delimiters geiser geiser-guile)
|
||||
|
||||
;; This program is free software; you can redistribute it and/or modify
|
||||
|
@ -30,6 +30,11 @@
|
|||
(require 'geiser-impl)
|
||||
(require 'geiser-repl)
|
||||
|
||||
(defvar oni-scheme-hidden-imports-keymap
|
||||
(let ((keymap (make-sparse-keymap)))
|
||||
(define-key keymap (kbd "TAB") 'oni-scheme-toggle-import-display)
|
||||
keymap))
|
||||
|
||||
(defun oni-scheme--auto-fill-mode ()
|
||||
"Enable ‘auto-fill-mode’ only for comments."
|
||||
(setq-local comment-auto-fill-only-comments t)
|
||||
|
@ -45,11 +50,44 @@
|
|||
(make-local-variable 'minor-mode-overriding-map-alist)
|
||||
(push `(paredit-mode . ,newmap) minor-mode-overriding-map-alist)))
|
||||
|
||||
(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)))))
|
||||
|
||||
(defun oni-scheme-hide-guile-imports ()
|
||||
"Hide the imports in ‘define-module’."
|
||||
(save-excursion
|
||||
(let (start end)
|
||||
(goto-char (point-min))
|
||||
(when (search-forward "(define-module" nil t)
|
||||
(forward-char -14)
|
||||
(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)))))))
|
||||
|
||||
(add-hook 'scheme-mode-hook 'company-mode)
|
||||
(add-hook 'scheme-mode-hook 'display-fill-column-indicator-mode)
|
||||
(add-hook 'scheme-mode-hook 'oni-scheme--auto-fill-mode)
|
||||
(add-hook 'scheme-mode-hook 'paredit-mode)
|
||||
(add-hook 'scheme-mode-hook 'rainbow-delimiters-mode)
|
||||
(add-hook 'scheme-mode-hook 'oni-scheme-hide-guile-imports)
|
||||
|
||||
(add-hook 'geiser-repl-mode-hook 'paredit-mode)
|
||||
;;; Make sure this gets added _after_ ‘paredit-mode’ so that it gets executed
|
||||
|
|
Loading…
Add table
Reference in a new issue