From 1dbdde9d5c392bf2042ee36abe37b9ec6cd86b2d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ra=C3=BAl=20Benencia?= Date: Thu, 27 Jul 2023 07:55:41 -0700 Subject: emacs: rul-write and rul-completion --- .emacs.d/rul-lisp/packages/rul-completion.el | 38 ++++++++++++++++++++++++++++ .emacs.d/rul-lisp/packages/rul-write.el | 38 ++++++++++++++++++++++++++++ 2 files changed, 76 insertions(+) create mode 100644 .emacs.d/rul-lisp/packages/rul-completion.el create mode 100644 .emacs.d/rul-lisp/packages/rul-write.el (limited to '.emacs.d/rul-lisp') diff --git a/.emacs.d/rul-lisp/packages/rul-completion.el b/.emacs.d/rul-lisp/packages/rul-completion.el new file mode 100644 index 0000000..d1bb8a6 --- /dev/null +++ b/.emacs.d/rul-lisp/packages/rul-completion.el @@ -0,0 +1,38 @@ +;; Enable vertico +(use-package vertico + :init + (vertico-mode) + + :config + (add-hook 'rfn-eshadow-update-overlay-hook #'vertico-directory-tidy) + + ;; Different scroll margin + ;; (setq vertico-scroll-margin 0) + + ;; Show more candidates + ;; (setq vertico-count 20) + + ;; Grow and shrink the Vertico minibuffer + ;; (setq vertico-resize t) + + ;; Optionally enable cycling for `vertico-next' and `vertico-previous'. + ;; (setq vertico-cycle t) + ) + +;; Enable rich annotations using the Marginalia package +(use-package marginalia + ;; Bind `marginalia-cycle' locally in the minibuffer. To make the binding + ;; available in the *Completions* buffer, add it to the + ;; `completion-list-mode-map'. + :bind (:map minibuffer-local-map + ("M-A" . marginalia-cycle)) + + ;; The :init section is always executed. + :init + + ;; Marginalia must be actived in the :init section of use-package such that + ;; the mode gets enabled right away. Note that this forces loading the + ;; package. + (marginalia-mode)) + +(provide 'rul-completion) diff --git a/.emacs.d/rul-lisp/packages/rul-write.el b/.emacs.d/rul-lisp/packages/rul-write.el new file mode 100644 index 0000000..933473d --- /dev/null +++ b/.emacs.d/rul-lisp/packages/rul-write.el @@ -0,0 +1,38 @@ +(use-package denote + :ensure t + :config + (setq denote-infer-keywords t) + (setq denote-sort-keywords t) + (setq denote-file-type 'text) + (setq denote-excluded-directories-regexp nil) + (setq denote-allow-multi-word-keywords nil) + (setq denote-link-fontify-backlinks t) + + (add-hook 'find-file-hook #'denote-link-buttonize-buffer) + (add-hook 'dired-mode-hook #'denote-dired-mode-in-directories) + + (let ((map global-map)) + (define-key map (kbd "C-c n j") #'rul/denote-journal) + (define-key map (kbd "C-c n n") #'denote)) +) + +(defun rul/denote-journal () + "Create an entry tagged 'journal' with the date as its title. +If a journal for the current day exists, visit it. If multiple +entries exist, prompt with completion for a choice between them. +Else create a new file." + (interactive) + (let* ((today (format-time-string "%A %e %B %Y")) + (string (denote-sluggify today)) + (files (denote-directory-files-matching-regexp string))) + (cond + ((> (length files) 1) + (find-file (completing-read "Select file: " files nil :require-match))) + (files + (find-file (car files))) + (t + (denote + today + '("journal")))))) + +(provide 'rul-write) -- cgit v1.2.3