diff options
| -rw-r--r-- | .builds/repo.yml | 7 | ||||
| -rw-r--r-- | GNUmakefile | 6 | ||||
| -rw-r--r-- | manifest.scm | 3 | ||||
| -rw-r--r-- | oni-browse-url.el | 6 | ||||
| -rw-r--r-- | oni-eww.el | 4 | ||||
| -rw-r--r-- | oni-flycheck.el | 4 | ||||
| -rw-r--r-- | oni-org/Eldev | 4 | ||||
| -rw-r--r-- | oni-org/oni-org.el | 84 | ||||
| -rw-r--r-- | oni-php/oni-php.el | 5 | ||||
| -rw-r--r-- | oni-scheme.el | 41 |
10 files changed, 80 insertions, 84 deletions
diff --git a/.builds/repo.yml b/.builds/repo.yml index 0ea020a..8d52f50 100644 --- a/.builds/repo.yml +++ b/.builds/repo.yml @@ -3,10 +3,11 @@ image: guix oauth: pages.sr.ht/PAGES:RW tasks: - guix: | + cd emacs-config guix package --verbosity=0 --manifest=manifest.scm - package: | + cd emacs-config make - upload: | - cd public - acurl -f "https://pages.sr.ht/publish/ryuslash.srht.site/emacs-config/" \ - -Fcontent=@emacs-config.tar.gz + cd emacs-config + hut pages publish -d ryuslash.srht.site -s emacs-config emacs-config.tar.gz diff --git a/GNUmakefile b/GNUmakefile index 20f90fc..26d4f34 100644 --- a/GNUmakefile +++ b/GNUmakefile @@ -110,6 +110,7 @@ package: \ $(OUTDIR)/$(guile (get-module-version "oni-nxml")) \ $(OUTDIR)/$(guile (get-multifile-module-version "oni-org")) \ $(OUTDIR)/$(guile (get-module-version "oni-org-roam")) \ + $(OUTDIR)/$(guile (get-module-version "oni-outline")) \ $(OUTDIR)/$(guile (get-module-version "oni-package")) \ $(OUTDIR)/$(guile (get-module-version "oni-paredit")) \ $(OUTDIR)/$(guile (get-multifile-module-version "oni-php")) \ @@ -137,7 +138,7 @@ package: \ $(OUTDIR)/$(guile (get-module-version "oni-web")) \ $(OUTDIR)/$(guile (get-module-version "oni-yaml")) \ $(OUTDIR)/$(guile (get-multifile-module-version "oni-yasnippet")) - cd public && tar cvzf emacs-config.tar.gz . + cd public && tar cvzf ../emacs-config.tar.gz . clean: rm -rfv .eldev public @@ -332,6 +333,9 @@ $(OUTDIR)/$(guile (get-module-version "oni-nxml")): oni-nxml.el $(OUTDIR)/$(guile (get-module-version "oni-org-roam")): oni-org-roam.el $(call upload,\"$<\") +$(OUTDIR)/$(guile (get-module-version "oni-outline")): oni-outline.el + $(call upload,\"$<\") + $(OUTDIR)/$(guile (get-module-version "oni-package")): oni-package.el $(call upload,\"$<\") diff --git a/manifest.scm b/manifest.scm index cc13671..fc0e556 100644 --- a/manifest.scm +++ b/manifest.scm @@ -7,4 +7,5 @@ "findutils" "git" "tar" - "gzip")) + "gzip" + "hut")) diff --git a/oni-browse-url.el b/oni-browse-url.el index 33260d2..d6a94f0 100644 --- a/oni-browse-url.el +++ b/oni-browse-url.el @@ -4,7 +4,7 @@ ;; Author: Tom Willemse <tom@ryuslash.org> ;; Keywords: local -;; Version: 2022.1213.070851 +;; Version: 2026.0707.172201 ;; This program is free software; you can redistribute it and/or modify ;; it under the terms of the GNU General Public License as published by @@ -71,8 +71,8 @@ before this filter." (t args)))) (setq browse-url-browser-function - (if (eql system-type 'windows-nt) - 'browse-url-default-windows-browser + (if (member system-type '(windows-nt darwin)) + 'browse-url-default-browser 'browse-url-firefox)) ;; Taken from https://mas.to/@ParetoOptimalDev/109378647927115065 @@ -4,7 +4,7 @@ ;; Author: Tom Willemse <tom@ryuslash.org> ;; Keywords: local -;; Version: 2026.0429.164233 +;; Version: 2026.0702.170337 ;; Package-Requires: (eww oni-data-dir) ;; This program is free software; you can redistribute it and/or modify @@ -27,6 +27,7 @@ ;;; Code: (require 'eww) +(require 'oni-data-dir) (defvar oni-eww-desired-window-width 120 "The window width which ‘oni-eww-resize-margins’ will try to accommodate.") @@ -56,6 +57,7 @@ Delete all other windows and then pass BUFFER and ALIST on to `(,(rx string-start "*eww*" string-end) oni-eww-display-buffer-in-only-window)) (add-hook 'eww-mode-hook #'oni-eww-setup-margins) +(add-hook 'eww-mode-hook #'outline-minor-mode) (provide 'oni-eww) ;;; oni-eww.el ends here diff --git a/oni-flycheck.el b/oni-flycheck.el index 7047b00..7304551 100644 --- a/oni-flycheck.el +++ b/oni-flycheck.el @@ -4,8 +4,8 @@ ;; Author: Tom Willemse <tom@ryuslash.org> ;; Keywords: local -;; Version: 2021.0715.221757 -;; Package-Requires: (flycheck flycheck-posframe flycheck-cask) +;; Version: 2026.0629.004856 +;; Package-Requires: (flycheck flycheck-posframe flycheck-cask flycheck-phpstan) ;; This program is free software; you can redistribute it and/or modify ;; it under the terms of the GNU General Public License as published by diff --git a/oni-org/Eldev b/oni-org/Eldev index f2baf05..225ee09 100644 --- a/oni-org/Eldev +++ b/oni-org/Eldev @@ -7,7 +7,9 @@ (eldev-use-package-archive `("oni" . ,(expand-file-name "../public/packages"))) (eldev-use-local-dependency - (car (directory-files (format "%s/share/emacs/site-lisp" (getenv "GUIX_ENVIRONMENT")) + (car (directory-files (format "%s/share/emacs/site-lisp" + (or (getenv "GUIX_ENVIRONMENT") + (expand-file-name "~/.guix-profile"))) t "org-pretty-table" nil 1))) (eldev-use-plugin 'autoloads) diff --git a/oni-org/oni-org.el b/oni-org/oni-org.el index ea85dbc..1c6ef2f 100644 --- a/oni-org/oni-org.el +++ b/oni-org/oni-org.el @@ -4,8 +4,8 @@ ;; Author: Tom Willemse <tom@ryuslash.org> ;; Keywords: local -;; Version: 2026.0616.072304 -;; Package-Requires: (oni-hydra org org-edna diminish olivetti org-pretty-table) +;; Version: 2026.0707.150746 +;; Package-Requires: (oni-hydra org org-edna diminish olivetti) ;; This program is free software; you can redistribute it and/or modify ;; it under the terms of the GNU General Public License as published by @@ -38,6 +38,7 @@ (require 'color) (require 'diminish) (require 'hydra) +(require 'map) (require 'ob) (require 'org) (require 'org-clock) @@ -46,10 +47,14 @@ (require 'org-faces) (require 'org-habit) (require 'org-protocol) -(require 'org-roam) (require 'range) (require 'subr-x) +(use-package org-pretty-table + :vc (:url "https://github.com/Fuco1/org-pretty-table.git" + :rev :newest) + :hook (org-mode)) + ;;; Constants (defconst oni-org-root @@ -242,7 +247,7 @@ _di_: Add inlineimages STARTUP ("A" (org-capture nil "a")) ("j" (org-capture nil "j")) ("f" oni-org-find-node) - ("i" org-roam-node-insert) + ;; ("i" org-roam-node-insert) ("di" oni-org-document-add-inline-images-startup)) (defun oni-org-in-dblock-p () @@ -361,7 +366,6 @@ and not a state update." (add-hook 'org-mode-hook 'flyspell-mode) (add-hook 'org-mode-hook 'olivetti-mode) (add-hook 'org-mode-hook 'org-indent-mode) -(add-hook 'org-mode-hook 'org-pretty-table-mode) (add-hook 'org-mode-hook 'variable-pitch-mode) (add-hook 'org-mode-hook 'visual-line-mode) (add-hook 'org-mode-hook 'yas-minor-mode) @@ -454,9 +458,9 @@ and not a state update." ;;;;; Custom Commands -(oni-org--map-put org-agenda-custom-commands "n" - '("NEXT items" - ((todo "NEXT")))) +(setf (map-elt org-agenda-custom-commands "n") + '("NEXT items" + ((todo "NEXT")))) ;;;; Capture @@ -986,27 +990,9 @@ This is done by adding a ‘:hidden t’ header argument to the code block." ,(/ (length text) 2))))) text)) -(defmacro oni-org--map-put (collection key value) - "The result of ‘(setf (map-elt ...) ...)’ on a list. -Trying to byte-compile the above form doesn't work at the moment. -This is a temporary hack to make sure I don't have to repeat this -same code all the time." - (declare (indent 2)) - (let ((key-name (gensym)) - (value-name (gensym))) - `(let ((,key-name ,key) - (,value-name ,value)) - (condition-case nil - (with-no-warnings - (map-put! ,collection ,key-name ,value-name nil)) - (map-not-inplace - (setq ,collection - (map-insert ,collection ,key-name ,value-name)) - ,value-name))))) - (defvar oni-org--capture-D-date nil) -(oni-org--map-put org-capture-templates "D" - '("A DONE item for my to-done list." entry (file oni-org-todo-main-file) "* DONE %? +(setf (map-elt org-capture-templates "D") + '("A DONE item for my to-done list." entry (file oni-org-todo-main-file) "* DONE %? CLOSED: %(setq oni-org--capture-D-date (format-time-string (org-time-stamp-format t t) (org-read-date t t nil \"Date: \"))) :PROPERTIES: :CREATED: %(progn oni-org--capture-D-date) @@ -1014,22 +1000,22 @@ CLOSED: %(setq oni-org--capture-D-date (format-time-string (org-time-stamp-forma :LOGBOOK: - State \"DONE\" from \"TODO\" %(progn oni-org--capture-D-date) :END:" - :after-finalize (lambda () (setq oni-org--capture-D-date nil)))) + :after-finalize (lambda () (setq oni-org--capture-D-date nil)))) -(oni-org--map-put org-capture-templates "t" - '("A simple TODO item." entry (file "") "* TODO %? +(setf (map-elt org-capture-templates "t") + '("A simple TODO item." entry (file "") "* TODO %? :PROPERTIES: :CREATED: %U :END:")) -(oni-org--map-put org-capture-templates "U" - '("A TODO capture from the browser." entry (file "") "* TODO %:description +(setf (map-elt org-capture-templates "U") + '("A TODO capture from the browser." entry (file "") "* TODO %:description :PROPERTIES: :CREATED: %U :END: %:link" - :immediate-finish t)) + :immediate-finish t)) (defun oni-org-find-new-note-file () (let ((title (read-string "Title: "))) @@ -1044,22 +1030,22 @@ CLOSED: %(setq oni-org--capture-D-date (format-time-string (org-time-stamp-forma oni-org-todo-dir)) (setq-local oni-org--capture-page-title title))) -(oni-org--map-put org-capture-templates "p" - '("A note page." plain (function oni-org-find-new-note-file) "#+TITLE: %(with-current-buffer (org-capture-get :buffer) oni-org--capture-page-title) +(setf (map-elt org-capture-templates "p") + '("A note page." plain (function oni-org-find-new-note-file) "#+TITLE: %(with-current-buffer (org-capture-get :buffer) oni-org--capture-page-title) #+DATE: %U %?" - :after-finalize (lambda () (when org-note-abort - (delete-file (buffer-file-name (org-capture-get :buffer)) t) - (kill-buffer (org-capture-get :buffer)))))) + :after-finalize (lambda () (when org-note-abort + (delete-file (buffer-file-name (org-capture-get :buffer)) t) + (kill-buffer (org-capture-get :buffer)))))) -(oni-org--map-put org-capture-templates "c" - '("Chores")) +(setf (map-elt org-capture-templates "c") + '("Chores")) -(oni-org--map-put org-capture-templates "cl" - `("Laundry" entry (file ,oni-org-todo-main-file) - (file ,(expand-file-name "laundry.org" oni-org-capture-template-directory)) - :immediate-finish t)) +(setf (map-elt org-capture-templates "cl") + `("Laundry" entry (file ,oni-org-todo-main-file) + (file ,(expand-file-name "laundry.org" oni-org-capture-template-directory)) + :immediate-finish t)) (defun oni-org-get-morning-checklist () "Get the template for my morning checklist." @@ -1075,10 +1061,10 @@ CLOSED: %(setq oni-org--capture-D-date (format-time-string (org-time-stamp-forma (expand-file-name "morning-checklist-trash.org" oni-org-capture-template-directory))) template)))) -(oni-org--map-put org-capture-templates "cm" - `("Morning Checklist" entry (file ,oni-org-todo-main-file) - (function oni-org-get-morning-checklist) - :immediate-finish t)) +(setf (map-elt org-capture-templates "cm") + `("Morning Checklist" entry (file ,oni-org-todo-main-file) + (function oni-org-get-morning-checklist) + :immediate-finish t)) (defun oni-org-insert-link (title entry) (interactive diff --git a/oni-php/oni-php.el b/oni-php/oni-php.el index 4c4b3d0..89b53c6 100644 --- a/oni-php/oni-php.el +++ b/oni-php/oni-php.el @@ -4,7 +4,7 @@ ;; Author: Tom Willemse <tom@ryuslash.org> ;; Keywords: local -;; Version: 2026.0628.181554 +;; Version: 2026.0629.012633 ;; Package-Requires: (php-mode oni-flycheck oni-hydra fic-mode rainbow-delimiters rainbow-identifiers) ;; This program is free software; you can redistribute it and/or modify @@ -28,11 +28,12 @@ ;;; Code: (require 'align) +(require 'grep) (require 'hydra) (require 'map) +(require 'php-mode) (require 'project) (require 'whitespace) -(require 'php-mode) (defconst oni-php-root (file-name-directory diff --git a/oni-scheme.el b/oni-scheme.el index 6c48414..cc0f553 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.001608 ;; Package-Requires: (oni-company oni-paredit rainbow-delimiters geiser geiser-guile) ;; This program is free software; you can redistribute it and/or modify @@ -50,37 +50,36 @@ (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’." (save-excursion (let (start end) (goto-char (point-min)) - (when (search-forward "(define-module" nil t) - (forward-char -14) + (when (re-search-forward (rx "(" (or "define-module" + "use-modules")) + nil t) + (forward-char (- (length (match-string 0)))) (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 nil nil t))) + (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) |
