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>
|
;; Author: Tom Willemse <tom@ryuslash.org>
|
||||||
;; Keywords: local
|
;; Keywords: local
|
||||||
;; Version: 2024.1217.235035
|
;; Version: 2025.0212.234333
|
||||||
;; Package-Requires: (oni-company oni-paredit rainbow-delimiters geiser geiser-guile)
|
;; Package-Requires: (oni-company oni-paredit rainbow-delimiters geiser geiser-guile)
|
||||||
|
|
||||||
;; This program is free software; you can redistribute it and/or modify
|
;; This program is free software; you can redistribute it and/or modify
|
||||||
|
@ -30,6 +30,11 @@
|
||||||
(require 'geiser-impl)
|
(require 'geiser-impl)
|
||||||
(require 'geiser-repl)
|
(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 ()
|
(defun oni-scheme--auto-fill-mode ()
|
||||||
"Enable ‘auto-fill-mode’ only for comments."
|
"Enable ‘auto-fill-mode’ only for comments."
|
||||||
(setq-local comment-auto-fill-only-comments t)
|
(setq-local comment-auto-fill-only-comments t)
|
||||||
|
@ -45,11 +50,44 @@
|
||||||
(make-local-variable 'minor-mode-overriding-map-alist)
|
(make-local-variable 'minor-mode-overriding-map-alist)
|
||||||
(push `(paredit-mode . ,newmap) 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 'company-mode)
|
||||||
(add-hook 'scheme-mode-hook 'display-fill-column-indicator-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 'oni-scheme--auto-fill-mode)
|
||||||
(add-hook 'scheme-mode-hook 'paredit-mode)
|
(add-hook 'scheme-mode-hook 'paredit-mode)
|
||||||
(add-hook 'scheme-mode-hook 'rainbow-delimiters-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)
|
(add-hook 'geiser-repl-mode-hook 'paredit-mode)
|
||||||
;;; Make sure this gets added _after_ ‘paredit-mode’ so that it gets executed
|
;;; Make sure this gets added _after_ ‘paredit-mode’ so that it gets executed
|
||||||
|
|
Loading…
Add table
Reference in a new issue