Compare commits

...

4 commits

Author SHA1 Message Date
Joe Ardent
bf9b17e6e5 update elpaca 2025-06-15 10:29:04 -07:00
Joe Ardent
d8cab4e766 fix up from work 2025-06-14 12:04:29 -07:00
Joe Ardent
1c82c0ccf4 merge from voltus-work branch 2025-06-06 16:20:37 -07:00
Joe Ardent
0e8ba5b408 remove denote 2025-06-06 16:01:05 -07:00
14 changed files with 294 additions and 646 deletions

View file

@ -1,3 +1,4 @@
;; -*- lexical-binding: t; -*-
(global-set-key [C-tab] #'other-window)
(global-set-key [C-S-tab] #'sother-window)
(global-set-key [C-iso-lefttab] #'sother-window)
@ -15,4 +16,11 @@
//
//-************************************************************************")
(use-package restclient
:ensure t)
(use-package restclient-jq
:ensure t)
(elpaca (1password :host github :repo "kamushadenes/1password.el")
(use-package 1password))
(provide 'nebkor-personal)

View file

@ -28,7 +28,7 @@
'("nebkor-modules" "custom-lisp"))
;;; Install Elpaca
(defvar elpaca-installer-version 0.9)
(defvar elpaca-installer-version 0.11)
(defvar elpaca-directory (expand-file-name "elpaca/" user-emacs-directory))
(defvar elpaca-builds-directory (expand-file-name "builds/" elpaca-directory))
(defvar elpaca-repos-directory (expand-file-name "repos/" elpaca-directory))
@ -43,7 +43,7 @@
(add-to-list 'load-path (if (file-exists-p build) build repo))
(unless (file-exists-p repo)
(make-directory repo t)
(when (< emacs-major-version 28) (require 'subr-x))
(when (<= emacs-major-version 28) (require 'subr-x))
(condition-case-unless-debug err
(if-let* ((buffer (pop-to-buffer-same-window "*elpaca-bootstrap*"))
((zerop (apply #'call-process `("git" nil ,buffer t "clone"
@ -63,10 +63,11 @@
(unless (require 'elpaca-autoloads nil t)
(require 'elpaca)
(elpaca-generate-autoloads "elpaca" repo)
(load "./elpaca-autoloads")))
(let ((load-source-file-function nil)) (load "./elpaca-autoloads"))))
(add-hook 'after-init-hook #'elpaca-process-queues)
(elpaca `(,@elpaca-order))
;; Install use-package support for Elpaca
(elpaca elpaca-use-package
;; Enable use-package :ensure support for Elpaca.

View file

@ -157,10 +157,11 @@
- [[#the-nebkor-langsel-section-for-ziglang-zig-mode][The =nebkor-langs.el= section for Ziglang (~zig-mode~)]]
- [[#the-nebkor-langsel-section-for-clojure-programming][The =nebkor-langs.el= section for Clojure programming]]
- [[#the-nebkor-langsel-section-for-scheme][The =nebkor-langs.el= section for Scheme]]
- [[#the-nebkor-langsel-section-for-go][The =nebkor-langs.el= section for Go]]
- [[#the-nebkor-langsel-section-for-terrform][The =nebkor-langs.el= section for Terrform]]
- [[#the-nebkor-langsel-section-for-emacs-lisp][The =nebkor-langs.el= section for Emacs Lisp]]
- [[#finally-we-provide-the-nebkor-langsel-module][Finally, we provide the =nebkor-langs.el= module]]
- [[#the-nebkor-studyel-module][The =nebkor-study.el= module]]
- [[#the-nebkor-studyel-section-for-notes-and-file-naming-denote][The =nebkor-study.el= section for notes and file-naming (~denote~)]]
- [[#the-nebkor-studyel-section-for-reading-and-annotation-of-pdfs-pdf-tools][The =nebkor-study.el= section for reading and annotation of PDFs (~pdf-tools~)]]
- [[#the-nebkor-studyel-section-for-annotation-of-org-and-eww-files-org-remark][The =nebkor-study.el= section for annotation of org and eww files (~org-remark~)]]
- [[#the-nebkor-studyel-section-for-flashcards-org-fc][The =nebkor-study.el= section for flashcards (~org-fc~)]]
@ -215,7 +216,8 @@ be updated accordingly.
#+end_quote
#+begin_src emacs-lisp :tangle no :results none
(org-babel-tangle)
;; -*- lexical-binding: t; -*-
(org-babel-tangle)
#+end_src
@ -498,7 +500,7 @@ When using ~elpaca~, here are some gotchas you should be aware of
#+begin_src emacs-lisp :tangle "init.el"
;;; Install Elpaca
(defvar elpaca-installer-version 0.9)
(defvar elpaca-installer-version 0.11)
(defvar elpaca-directory (expand-file-name "elpaca/" user-emacs-directory))
(defvar elpaca-builds-directory (expand-file-name "builds/" elpaca-directory))
(defvar elpaca-repos-directory (expand-file-name "repos/" elpaca-directory))
@ -513,7 +515,7 @@ When using ~elpaca~, here are some gotchas you should be aware of
(add-to-list 'load-path (if (file-exists-p build) build repo))
(unless (file-exists-p repo)
(make-directory repo t)
(when (< emacs-major-version 28) (require 'subr-x))
(when (<= emacs-major-version 28) (require 'subr-x))
(condition-case-unless-debug err
(if-let* ((buffer (pop-to-buffer-same-window "*elpaca-bootstrap*"))
((zerop (apply #'call-process `("git" nil ,buffer t "clone"
@ -533,10 +535,11 @@ When using ~elpaca~, here are some gotchas you should be aware of
(unless (require 'elpaca-autoloads nil t)
(require 'elpaca)
(elpaca-generate-autoloads "elpaca" repo)
(load "./elpaca-autoloads")))
(let ((load-source-file-function nil)) (load "./elpaca-autoloads"))))
(add-hook 'after-init-hook #'elpaca-process-queues)
(elpaca `(,@elpaca-order))
;; Install use-package support for Elpaca
(elpaca elpaca-use-package
;; Enable use-package :ensure support for Elpaca.
@ -671,6 +674,7 @@ Now we are ready to load our per-module configuration files:
This module defines everything related to the aesthetics of Emacs.
#+begin_src emacs-lisp :tangle "nebkor-modules/nebkor-theme.el" :mkdirp yes
;; -*- lexical-binding: t; -*-
;;; Everything related to the look of Emacs
#+end_src
@ -1013,6 +1017,7 @@ in the function ~prot/enable-variable-pitch~.
:END:
#+begin_src emacs-lisp :tangle "nebkor-modules/nebkor-essentials.el" :mkdirp yes
;; -*- lexical-binding: t; -*-
;;; Essential configurations
(use-package emacs
:ensure nil
@ -1349,8 +1354,8 @@ These are modifications to basic configuration I use on my Mac OSX machine.
(process-send-string proc text)
(process-send-eof proc))))
(setq mac-command-modifier 'meta)
(setq mac-option-modifier 'alt)
;;(setq mac-command-modifier 'meta)
;;(setq mac-option-modifier 'alt)
(setq interprogram-cut-function #'paste-to-osx)
(setq interprogram-paste-function #'copy-from-osx)
;; Work around a bug on OS X where system-name is a fully qualified
@ -1568,73 +1573,74 @@ soon as I type a space after some characters I am using ~orderless~.
(There are more details in Prot's file, for the interested reader)
#+begin_src emacs-lisp :tangle "nebkor-modules/nebkor-completion.el" :mkdirp yes
;;; General minibuffer settings
(use-package minibuffer
:ensure nil
:config
;;;; Completion styles
(setq completion-styles '(basic substring initials flex orderless)) ; also see `completion-category-overrides'
(setq completion-pcm-leading-wildcard t) ; Emacs 31: make `partial-completion' behave like `substring'
;; -*- lexical-binding: t; -*-
;;; General minibuffer settings
(use-package minibuffer
:ensure nil
:config
;;;; Completion styles
(setq completion-styles '(basic substring initials flex orderless)) ; also see `completion-category-overrides'
(setq completion-pcm-leading-wildcard t) ; Emacs 31: make `partial-completion' behave like `substring'
;; Reset all the per-category defaults so that (i) we use the
;; standard `completion-styles' and (ii) can specify our own styles
;; in the `completion-category-overrides' without having to
;; explicitly override everything.
(setq completion-category-defaults nil)
;; Reset all the per-category defaults so that (i) we use the
;; standard `completion-styles' and (ii) can specify our own styles
;; in the `completion-category-overrides' without having to
;; explicitly override everything.
(setq completion-category-defaults nil)
;; A non-exhaustve list of known completion categories:
;;
;; - `bookmark'
;; - `buffer'
;; - `charset'
;; - `coding-system'
;; - `color'
;; - `command' (e.g. `M-x')
;; - `customize-group'
;; - `environment-variable'
;; - `expression'
;; - `face'
;; - `file'
;; - `function' (the `describe-function' command bound to `C-h f')
;; - `info-menu'
;; - `imenu'
;; - `input-method'
;; - `kill-ring'
;; - `library'
;; - `minor-mode'
;; - `multi-category'
;; - `package'
;; - `project-file'
;; - `symbol' (the `describe-symbol' command bound to `C-h o')
;; - `theme'
;; - `unicode-name' (the `insert-char' command bound to `C-x 8 RET')
;; - `variable' (the `describe-variable' command bound to `C-h v')
;; - `consult-grep'
;; - `consult-isearch'
;; - `consult-kmacro'
;; - `consult-location'
;; - `embark-keybinding'
;;
(setq completion-category-overrides
;; NOTE 2021-10-25: I am adding `basic' because it works better as a
;; default for some contexts. Read:
;; <https://debbugs.gnu.org/cgi/bugreport.cgi?bug=50387>.
;;
;; `partial-completion' is a killer app for files, because it
;; can expand ~/.l/s/fo to ~/.local/share/fonts.
;;
;; If `basic' cannot match my current input, Emacs tries the
;; next completion style in the given order. In other words,
;; `orderless' kicks in as soon as I input a space or one of its
;; style dispatcher characters.
'((file (styles . (basic partial-completion orderless)))
(bookmark (styles . (basic substring)))
(library (styles . (basic substring)))
(embark-keybinding (styles . (basic substring)))
(imenu (styles . (basic substring orderless)))
(consult-location (styles . (basic substring orderless)))
(kill-ring (styles . (emacs22 orderless)))
(eglot (styles . (emacs22 substring orderless))))))
;; A non-exhaustve list of known completion categories:
;;
;; - `bookmark'
;; - `buffer'
;; - `charset'
;; - `coding-system'
;; - `color'
;; - `command' (e.g. `M-x')
;; - `customize-group'
;; - `environment-variable'
;; - `expression'
;; - `face'
;; - `file'
;; - `function' (the `describe-function' command bound to `C-h f')
;; - `info-menu'
;; - `imenu'
;; - `input-method'
;; - `kill-ring'
;; - `library'
;; - `minor-mode'
;; - `multi-category'
;; - `package'
;; - `project-file'
;; - `symbol' (the `describe-symbol' command bound to `C-h o')
;; - `theme'
;; - `unicode-name' (the `insert-char' command bound to `C-x 8 RET')
;; - `variable' (the `describe-variable' command bound to `C-h v')
;; - `consult-grep'
;; - `consult-isearch'
;; - `consult-kmacro'
;; - `consult-location'
;; - `embark-keybinding'
;;
(setq completion-category-overrides
;; NOTE 2021-10-25: I am adding `basic' because it works better as a
;; default for some contexts. Read:
;; <https://debbugs.gnu.org/cgi/bugreport.cgi?bug=50387>.
;;
;; `partial-completion' is a killer app for files, because it
;; can expand ~/.l/s/fo to ~/.local/share/fonts.
;;
;; If `basic' cannot match my current input, Emacs tries the
;; next completion style in the given order. In other words,
;; `orderless' kicks in as soon as I input a space or one of its
;; style dispatcher characters.
'((file (styles . (basic partial-completion orderless)))
(bookmark (styles . (basic substring)))
(library (styles . (basic substring)))
(embark-keybinding (styles . (basic substring)))
(imenu (styles . (basic substring orderless)))
(consult-location (styles . (basic substring orderless)))
(kill-ring (styles . (emacs22 orderless)))
(eglot (styles . (emacs22 substring orderless))))))
#+end_src
** The =nebkor-completion.el= for the ~orderless~ completion style
@ -2235,6 +2241,7 @@ I use ~vertico-repeat~ to mimic the functionality that ~helm-resume~ would provi
My old custom functions file.
#+begin_src emacs-lisp :tangle "nebkor-modules/nebkor-functions.el" :mkdirp yes
;; -*- lexical-binding: t; -*-
(defun diff-and-set-modified-p ()
"Diff the current buffer with its associated file and set buffer modified status."
(let* ((tmpfile (diff-file-local-copy (current-buffer)))
@ -2308,6 +2315,20 @@ My old custom functions file.
(set-window-buffer-start-and-point w1 b2 s2 p2)
(set-window-buffer-start-and-point w2 b1 s1 p1)))))))
(defun my-update-env (fn)
(let ((str
(with-temp-buffer
(insert-file-contents fn)
(buffer-string))) lst)
(setq lst (split-string str "\000"))
(while lst
(setq cur (car lst))
(when (string-match "^\\(.*?\\)=\\(.*\\)" cur)
(setq var (match-string 1 cur))
(setq value (match-string 2 cur))
(setenv var value))
(setq lst (cdr lst)))))
(provide 'nebkor-functions)
#+end_src
@ -2412,6 +2433,7 @@ Now on to the configurations.
tweak to ensure that ~consult-imenu~ returns good ~imenu~ results to us.
#+begin_src emacs-lisp :tangle "nebkor-modules/nebkor-search.el" :mkdirp yes
;; -*- lexical-binding: t; -*-
(use-package imenu
:ensure nil
:config
@ -2729,14 +2751,15 @@ them manually. I prefer this extra layer of safety. Plus, we have the
#+end_quote
#+begin_src emacs-lisp :tangle "nebkor-modules/nebkor-dired.el" :mkdirp yes
;;; Dired file manager and prot-dired.el extras
(use-package dired
:ensure nil
:commands (dired)
:config
(setq dired-recursive-copies 'always)
(setq dired-recursive-deletes 'always)
(setq delete-by-moving-to-trash t))
;; -*- lexical-binding: t; -*-
;;; Dired file manager and prot-dired.el extras
(use-package dired
:ensure nil
:commands (dired)
:config
(setq dired-recursive-copies 'always)
(setq dired-recursive-deletes 'always)
(setq delete-by-moving-to-trash t))
#+end_src
** The =nebkor-dired.el= switches for how files are listed (~ls~)
@ -3078,14 +3101,15 @@ name.
#+end_quote
#+begin_src emacs-lisp :tangle "nebkor-modules/nebkor-window.el"
;;; General window and buffer configurations
(use-package uniquify
:ensure nil
:config
;;;; `uniquify' (unique names for buffers)
(setq uniquify-buffer-name-style 'forward)
(setq uniquify-strip-common-suffix t)
(setq uniquify-after-kill-buffer-p t))
;; -*- lexical-binding: t; -*-
;;; General window and buffer configurations
(use-package uniquify
:ensure nil
:config
;;;; `uniquify' (unique names for buffers)
(setq uniquify-buffer-name-style 'forward)
(setq uniquify-strip-common-suffix t)
(setq uniquify-after-kill-buffer-p t))
#+end_src
@ -3261,18 +3285,19 @@ integrates with ~magit~ ([[#h:b08af527-9ebf-4425-ac3a-24b4f371a4fd][The =nebkor-
#+end_quote
#+begin_src emacs-lisp :tangle "nebkor-modules/nebkor-git.el" :mkdirp yes
;;;; `ediff'
(use-package ediff
:ensure nil
:commands (ediff-buffers ediff-files ediff-buffers3 ediff-files3)
:init
(setq ediff-split-window-function 'split-window-horizontally)
(setq ediff-window-setup-function 'ediff-setup-windows-plain)
:config
(setq ediff-keep-variants nil)
(setq ediff-make-buffers-readonly-at-startup nil)
(setq ediff-merge-revisions-with-ancestor t)
(setq ediff-show-clashes-only t))
;; -*- lexical-binding: t; -*-
;;;; `ediff'
(use-package ediff
:ensure nil
:commands (ediff-buffers ediff-files ediff-buffers3 ediff-files3)
:init
(setq ediff-split-window-function 'split-window-horizontally)
(setq ediff-window-setup-function 'ediff-setup-windows-plain)
:config
(setq ediff-keep-variants nil)
(setq ediff-make-buffers-readonly-at-startup nil)
(setq ediff-merge-revisions-with-ancestor t)
(setq ediff-show-clashes-only t))
#+end_src
** The =nebkor-git.el= section about project management (~project~)
@ -3439,6 +3464,22 @@ branches, etc.
'(("~/src/prototypes" . 1))))
#+end_src
#+begin_quote
The difftastic Emacs package is designed to integrate difftastic - a structural diff tool - into
your Emacs workflow, enhancing your code review and comparison experience. This package
automatically displays difftastics output within Emacs using faces from your user theme, ensuring
consistency with your overall coding environment.
#+end_quote
#+begin_src emacs-lisp :tangle "nebkor-modules/nebkor-git.el"
(elpaca (difftastic :host "github.com" :repo "pkryger/difftastic.el")
(use-package difftastic))
(use-package difftastic-bindings
:after difftastic
:config (difftastic-bindings-mode))
#+end_src
** Finally, we provide the =nebkor-git.el= module
:PROPERTIES:
:CUSTOM_ID: h:4e7035c5-9350-4c51-be85-85f2539ed295
@ -3522,28 +3563,29 @@ Org is far more capable, so I switched to it completely.
#+end_quote
#+begin_src emacs-lisp :tangle "nebkor-modules/nebkor-org.el" :mkdirp yes
;;; Calendar
(use-package calendar
:ensure nil
:commands (calendar)
:config
(setq calendar-mark-diary-entries-flag nil)
(setq calendar-mark-holidays-flag t)
(setq calendar-mode-line-format nil)
(setq calendar-time-display-form
'( 24-hours ":" minutes
(when time-zone (format "(%s)" time-zone))))
(setq calendar-week-start-day 1) ; Monday
(setq calendar-date-style 'iso)
(setq calendar-time-zone-style 'numeric) ; Emacs 28.1
;; -*- lexical-binding: t; -*-
;;; Calendar
(use-package calendar
:ensure nil
:commands (calendar)
:config
(setq calendar-mark-diary-entries-flag nil)
(setq calendar-mark-holidays-flag t)
(setq calendar-mode-line-format nil)
(setq calendar-time-display-form
'( 24-hours ":" minutes
(when time-zone (format "(%s)" time-zone))))
(setq calendar-week-start-day 1) ; Monday
(setq calendar-date-style 'iso)
(setq calendar-time-zone-style 'numeric) ; Emacs 28.1
(require 'solar)
(setq calendar-latitude 35.17 ; Not my actual coordinates
calendar-longitude 33.36)
(require 'solar)
(setq calendar-latitude 35.17 ; Not my actual coordinates
calendar-longitude 33.36)
(require 'cal-dst)
(setq calendar-standard-time-zone-name "+0700")
(setq calendar-daylight-time-zone-name "+0800"))
(require 'cal-dst)
(setq calendar-standard-time-zone-name "+0700")
(setq calendar-daylight-time-zone-name "+0800"))
#+end_src
** The =nebkor-org.el= section about appointment reminders (~appt~)
@ -4498,6 +4540,7 @@ title of the task, and the like. The documentation string of
:END:
#+begin_src emacs-lisp :tangle "nebkor-modules/nebkor-langs.el" :mkdirp yes
;; -*- lexical-binding: t; -*-
;;;; Tabs, indentation, and the TAB key
(use-package emacs
:ensure nil
@ -4731,12 +4774,12 @@ of packaging. I use it whenever I work on my numerous Emacs packages.
(use-package flymake
:ensure nil
:bind
( :map flymake-mode-map
(:map flymake-mode-map
("C-c ! s" . flymake-start)
("C-c ! l" . flymake-show-buffer-diagnostics) ; Emacs28
("C-c ! L" . flymake-show-project-diagnostics) ; Emacs28
("C-c ! n" . flymake-goto-next-error)
("C-c ! p" . flymake-goto-prev-error))
("M-g n" . flymake-goto-next-error)
("M-g p" . flymake-goto-prev-error))
:hook
(prog-mode . turn-on-flymake)
:config
@ -4900,12 +4943,14 @@ colors (you can use tree-sitter to do *syntactic* highlighting, but that's diffe
lsp-eldoc-render-all t
lsp-idle-delay 0.2
lsp-enable-snippet t
lsp-file-watch-threshold 3000
read-process-output-max (* 1024 1024))
:hook
(
(lsp-mode . lsp-enable-which-key-integration)
(lsp-mode . subword-mode)
(lsp-completion-mode . my/lsp-mode-setup-completion)
(go-ts-mode . lsp-mode)
;;(before-save . lsp-format-buffer)
))
#+end_src
@ -5232,6 +5277,45 @@ for this to continue.
:config (add-hook 'geiser-repl-mode-hook #'macrostep-geiser-setup))
#+end_src
** The =nebkor-langs.el= section for Go
:PROPERTIES:
:ID: 3EE09964-FF3B-43BC-A09D-7CA94A245D25
:END:
#+begin_src emacs-lisp :tangle "nebkor-modules/nebkor-langs.el"
(use-package go-ts-mode
:ensure nil
:hook
(go-ts-mode . go-format-on-save-mode)
(go-ts-mode . (lambda () (set (make-local-variable 'tab-width) 2)))
:custom
(go-mode-indent-offset 2)
:init
(add-to-list 'treesit-language-source-alist '(go "https://github.com/tree-sitter/tree-sitter-go"))
(add-to-list 'treesit-language-source-alist '(gomod "https://github.com/camdencheek/tree-sitter-go-mod"))
(add-to-list 'auto-mode-alist '("\\.go\\'" . go-ts-mode))
(add-to-list 'auto-mode-alist '("/go\\.mod\\'" . go-mod-ts-mode))
:config
(reformatter-define go-format
:program "goimports"
:args '("/dev/stdin")))
(use-package flycheck-golangci-lint
:ensure t
:hook
(go-ts-mode . flycheck-golangci-lint-setup))
#+end_src
** The =nebkor-langs.el= section for Terrform
:PROPERTIES:
:ID: 43DB91FB-9B4E-4D6A-AF89-CDCD22469C3A
:END:
#+begin_src emacs-lisp :tangle "nebkor-modules/nebkor-langs.el"
(use-package terraform-mode
:ensure t)
#+end_src
** The =nebkor-langs.el= section for Emacs Lisp
:PROPERTIES:
@ -5267,301 +5351,6 @@ for this to continue.
This file contains configuration for everything I use to make Emacs my
go-to place for studying anything.
** The =nebkor-study.el= section for notes and file-naming (~denote~)
:PROPERTIES:
:CUSTOM_ID: h:e86a66dc-7ef9-4f09-ad7e-946de2034e8d
:CREATED: [2024-12-12 Thu 21:33]
:ID: 01JGD334B4000DNEXGHP7T9FSS
:END:
Denote is my goto tool for any and all note-taking. This is what
powers my brain forest, and where anything and everything I write
starts from.
By default, Denote looks for files in the =~/Documents/notes/=
directory. If you want to use a location other than the default
localtion for your ~denote~ files, set the environment variable
~DENOTE_DIRECTORY~.
#+begin_quote
This is another one of my packages and is extended by my
~consult-denote~ package ([[#h:ee82e629-fb05-4c75-9175-48a760a25691][The =nebkor-study.el= integration between Consult and Denote (~consult-denote~)]]).
Denote is a simple note-taking tool for Emacs. It is based on the idea
that notes should follow a predictable and descriptive file-naming
scheme. The file name must offer a clear indication of what the note is
about, without reference to any other metadata. Denote basically
streamlines the creation of such files while providing facilities to
link between them.
Denote's file-naming scheme is not limited to "notes". It can be used
for all types of file, including those that are not editable in Emacs,
such as videos. Naming files in a consistent way makes their
filtering and retrieval considerably easier. Denote provides relevant
facilities to rename files, regardless of file type.
#+end_quote
Prot is the developer and maintainer of this package.
+ Package name (GNU ELPA): ~denote~
+ Official manual: <https://protesilaos.com/emacs/denote>
+ Change log: <https://protesilaos.com/emacs/denote-changelog>
+ Git repositories:
- GitHub: <https://github.com/protesilaos/denote>
- GitLab: <https://gitlab.com/protesilaos/denote>
+ Video demo: <https://protesilaos.com/codelog/2022-06-18-denote-demo/>
+ Backronyms: Denote Everything Neatly; Omit The Excesses. Don't Ever
Note Only The Epiphenomenal.
#+begin_src emacs-lisp :tangle "nebkor-modules/nebkor-study.el" :mkdirp yes
;;; Denote (simple note-taking and file-naming)
;; Read the manual: <https://protesilaos.com/emacs/denote>. This does
;; not include all the useful features of Denote. I have a separate
;; private setup for those, as I need to test everything is in order.
(use-package denote
:ensure t
:hook
;; If you use Markdown or plain text files you want to fontify links
;; upon visiting the file (Org renders links as buttons right away).
((text-mode . denote-fontify-links-mode-maybe)
;; Highlight Denote file names in Dired buffers. Below is the
;; generic approach, which is great if you rename files Denote-style
;; in lots of places as I do.
;;
;; If you only want the `denote-dired-mode' in select directories,
;; then modify the variable `denote-dired-directories' and use the
;; following instead:
;;
;; (dired-mode . denote-dired-mode-in-directories)
(dired-mode . denote-dired-mode))
:bind
;; Denote DOES NOT define any key bindings. This is for the user to
;; decide. Here I only have a subset of what Denote offers.
( :map global-map
("C-c d n" . denote-create-note)
("C-c d N" . denote-silo-extras-select-silo-then-command)
("C-c d o" . denote-open-or-create)
("C-c d O" . denote-silo-extras-open-or-create)
("C-c d l" . denote-link-or-create)
("C-c d L" . denote-link-after-creating-with-command)
;; Note that `denote-rename-file' can work from any context, not
;; just Dired buffers. That is why we bind it here to the
;; `global-map'.
;;
;; Also see `denote-rename-file-using-front-matter' further below.
("C-c d r" . denote-rename-file)
;; If you intend to use Denote with a variety of file types, it is
;; easier to bind the link-related commands to the `global-map', as
;; shown here. Otherwise follow the same pattern for
;; `org-mode-map', `markdown-mode-map', and/or `text-mode-map'.
("C-c d j" . denote-journal-extras-new-entry)
("C-c d s" . denote-sort-dired)
;; Bindings to personal functions (defined below)
("C-c d p m" . vedang/denote-publishing-extras-new-microblog-entry)
("C-c d p b" . vedang/denote-publishing-extras-new-blog-entry)
:map text-mode-map
("C-c d B" . denote-backlinks)
("C-c d b" . denote-find-backlink)
;; Also see `denote-rename-file' further above.
("C-c d R" . denote-rename-file-using-front-matter)
("C-c d k" . denote-rename-file-keywords)
:map org-mode-map
("C-c d h" . denote-org-extras-link-to-heading)
("C-c d d l" . denote-org-extras-dblock-insert-links)
("C-c d d b" . denote-org-extras-dblock-insert-backlinks)
("C-c d d m" . denote-org-extras-dblock-insert-missing-links)
;; Key bindings specifically for Dired.
:map dired-mode-map
("C-c C-d C-i" . denote-dired-link-marked-notes)
("C-c C-d C-r" . denote-dired-rename-marked-files)
("C-c C-d C-k" . denote-dired-rename-marked-files-with-keywords)
("C-c C-d C-A" . denote-dired-rename-marked-files-add-keywords)
("C-c C-d C-K" . denote-dired-rename-marked-files-remove-keywords)
("C-c C-d C-f" . denote-dired-rename-marked-files-using-front-matter))
:config
(require 'denote-silo-extras)
(require 'denote-journal-extras)
(require 'denote-org-extras)
;; Remember to check the doc strings of those variables.
(let ((dir (string-trim (shell-command-to-string "echo $DENOTE_DIRECTORY"))))
(when (not (string-empty-p dir))
(setq denote-directory (expand-file-name dir))
(setq denote-journal-extras-directory (expand-file-name "journal" denote-directory))))
(setq denote-infer-keywords t)
(setq denote-sort-keywords t)
(setq denote-excluded-directories-regexp "data") ; external data related to headings is stored in these directories (web archives)
(setq denote-date-format nil) ; read its doc string
(setq denote-date-prompt-use-org-read-date t)
(setq denote-prompts '(title keywords subdirectory signature))
(setq denote-rename-confirmations nil) ; CAREFUL with this if you are not familiar with Denote!
(setq denote-save-buffers t)
(setq denote-rename-buffer-format "[D] %s %t%b")
;; Automatically rename Denote buffers when opening them so that
;; instead of their long file name they have a literal "[D]"
;; followed by the file's title. Read the doc string of
;; `denote-rename-buffer-format' for how to modify this.
(denote-rename-buffer-mode 1)
(setq denote-buffer-has-backlinks-string " (<--->)")
(setq denote-backlinks-show-context t)
(setq denote-org-store-link-to-heading t)
;; Journal settings
(setq denote-journal-extras-keyword "")
;; I use Yasnippet to expand these into a better template.
(add-to-list 'denote-templates '(reference-note . "reference"))
(add-to-list 'denote-templates '(morning . "morningpage"))
(add-to-list 'denote-templates '(emotion . "emotion"))
(add-to-list 'denote-templates '(insight . "insight"))
(add-to-list 'denote-templates '(weekly_intentions . "weekint"))
(add-to-list 'denote-templates '(weekly_report . "weekrpt"))
(add-to-list 'denote-templates '(sketch . "sketch"))
;; Front-matter for Org files
(setq denote-org-front-matter
":PROPERTIES:
:ID: %4$s
:CREATED: %2$s
:END:
,#+title: %1$s
,#+filetags: %3$s
,#+date: %2$s
,#+identifier: %4$s
\n")
(defun vedang/denote-publishing-extras-new-blog-entry (&optional date)
"Create a new blog entry.
With optional DATE as a prefix argument, prompt for a date. If
`denote-date-prompt-use-org-read-date' is non-nil, use the Org
date selection module.
When called from Lisp DATE is a string and has the same format as
that covered in the documentation of the `denote' function. It
is internally processed by `denote-parse-date'."
(interactive (list (when current-prefix-arg (denote-date-prompt))))
(let ((internal-date (denote-parse-date date))
(denote-directory (file-name-as-directory (expand-file-name "published" denote-directory))))
(denote
(denote-title-prompt)
'("draft")
nil nil date
;; See YASnippet
"fullblog")))
(defun vedang/denote-publishing-extras-new-microblog-entry (&optional date)
"Create a new microblog entry.
Set the title of the new entry according to the value of the user option
`denote-journal-extras-title-format'.
With optional DATE as a prefix argument, prompt for a date. If
`denote-date-prompt-use-org-read-date' is non-nil, use the Org
date selection module.
When called from Lisp DATE is a string and has the same format as
that covered in the documentation of the `denote' function. It
is internally processed by `denote-parse-date'."
(interactive (list (when current-prefix-arg (denote-date-prompt))))
(let ((internal-date (denote-parse-date date))
(denote-directory (file-name-as-directory (expand-file-name "published" denote-directory))))
(denote
(denote-journal-extras-daily--title-format internal-date)
'("draft" "microblog")
nil nil date
;; See YASnippet
"microblog")))
(defun vedang/denote-link-ol-get-id ()
"Get the CUSTOM_ID of the current entry.
If the entry already has a CUSTOM_ID, return it as-is, else create a new
one.
If we are creating a new ID, add a CREATED property with the current
timestamp as well.
This function is based on `denote-link-ol-get-id', with minor
modifications."
(interactive)
(let* ((pos (point))
(id (org-entry-get pos "CUSTOM_ID"))
(created (org-entry-get pos "CREATED")))
(if (and (stringp id) (string-match-p "\\S-" id))
id
(setq id (org-id-new "h"))
(org-entry-put pos "CUSTOM_ID" id))
(when (not created)
(setq created (format-time-string (org-time-stamp-format t t) (current-time)))
(org-entry-put pos "CREATED" created))
id))
(defun vedang/denote--split-luhman-sig (signature)
"Split numbers and letters in Luhmann-style SIGNATURE string."
(replace-regexp-in-string
"\\([a-zA-Z]+?\\)\\([0-9]\\)" "\\1=\\2"
(replace-regexp-in-string
"\\([0-9]+?\\)\\([a-zA-Z]\\)" "\\1=\\2"
signature)))
(defun vedang/denote--pad-sig (signature)
"Create a new signature with padded spaces for all components"
(combine-and-quote-strings
(mapcar
(lambda (x)
(string-pad x 5 32 t))
(split-string (vedang/denote--split-luhman-sig signature) "=" t))
"="))
(defun vedang/denote-sort-for-signatures (sig1 sig2)
"Return non-nil if SIG1 is smaller that SIG2.
Perform the comparison with `string<'."
(string< (vedang/denote--pad-sig sig1) (vedang/denote--pad-sig sig2)))
(setq denote-sort-signature-comparison-function #'vedang/denote-sort-for-signatures))
#+end_src
*** The =nebkor-study.el= integration between Consult and Denote (~consult-denote~)
:PROPERTIES:
:CUSTOM_ID: h:ee82e629-fb05-4c75-9175-48a760a25691
:ID: 01JGD334BB000DF3EBFKMP10F4
:END:
#+begin_quote
This is another package of mine which extends my ~denote~ package
([[#h:e86a66dc-7ef9-4f09-ad7e-946de2034e8d][The =nebkor-study.el= settings for ~denote~ (notes and file-naming)]]).
This is glue code to integrate ~denote~ with Daniel Mendler's
~consult~ ([[#h:22e97b4c-d88d-4deb-9ab3-f80631f9ff1d][The =nebkor-completion.el= settings for ~consult~]]). The
idea is to enhance minibuffer interactions, such as by providing a
preview of the file-to-linked/opened and by adding more sources to the
~consult-buffer~ command.
#+end_quote
Prot is the developer of this package.
+ Package name (GNU ELPA): ~consult-denote~
+ Official manual: not available yet.
+ Git repositories:
+ GitHub: <https://github.com/protesilaos/consult-denote>
#+begin_src emacs-lisp :tangle "nebkor-modules/nebkor-study.el"
(use-package consult-denote
:ensure t
:bind
(("C-c d f" . consult-denote-find)
("C-c d g" . consult-denote-grep))
:config
(consult-denote-mode 1))
#+end_src
** The =nebkor-study.el= section for reading and annotation of PDFs (~pdf-tools~)
:PROPERTIES:
:CUSTOM_ID: h:B662EABD-DC46-468A-BF59-E67AC48D2DDA
@ -5572,7 +5361,8 @@ Prot is the developer of this package.
PDF Tools is an absolute powerhouse for reading and annotating PDF
files. It is my goto tool for reading any academic papers.
#+begin_src emacs-lisp :tangle "nebkor-modules/nebkor-study.el"
#+begin_src emacs-lisp :tangle "nebkor-modules/nebkor-study.el" :mkdirp yes
;; -*- lexical-binding: t; -*-
;;; PDF Tools for reading and annotating PDF files
(use-package pdf-tools
:ensure (:host github :repo "vedang/pdf-tools" :branch "master")
@ -6557,6 +6347,7 @@ figure it out.
:END:
#+begin_src emacs-lisp :tangle "custom-lisp/nebkor-personal.el" :mkdirp yes
;; -*- lexical-binding: t; -*-
(global-set-key [C-tab] #'other-window)
(global-set-key [C-S-tab] #'sother-window)
(global-set-key [C-iso-lefttab] #'sother-window)
@ -6573,6 +6364,14 @@ figure it out.
"//-************************************************************************
//
//-************************************************************************")
(use-package restclient
:ensure t)
(use-package restclient-jq
:ensure t)
(elpaca (1password :host github :repo "kamushadenes/1password.el")
(use-package 1password))
#+end_src
*** Finally, we provide the =nebkor-personal.el= module

View file

@ -1,3 +1,4 @@
;; -*- lexical-binding: t; -*-
;;; General minibuffer settings
(use-package minibuffer
:ensure nil

View file

@ -1,3 +1,4 @@
;; -*- lexical-binding: t; -*-
;;; Dired file manager and prot-dired.el extras
(use-package dired
:ensure nil

View file

@ -1,3 +1,4 @@
;; -*- lexical-binding: t; -*-
;;; Essential configurations
(use-package emacs
:ensure nil
@ -166,8 +167,8 @@ word. Fall back to regular `expreg-expand'."
(process-send-string proc text)
(process-send-eof proc))))
(setq mac-command-modifier 'meta)
(setq mac-option-modifier 'alt)
;;(setq mac-command-modifier 'meta)
;;(setq mac-option-modifier 'alt)
(setq interprogram-cut-function #'paste-to-osx)
(setq interprogram-paste-function #'copy-from-osx)
;; Work around a bug on OS X where system-name is a fully qualified

View file

@ -1,3 +1,4 @@
;; -*- lexical-binding: t; -*-
(defun diff-and-set-modified-p ()
"Diff the current buffer with its associated file and set buffer modified status."
(let* ((tmpfile (diff-file-local-copy (current-buffer)))
@ -71,4 +72,18 @@
(set-window-buffer-start-and-point w1 b2 s2 p2)
(set-window-buffer-start-and-point w2 b1 s1 p1)))))))
(defun my-update-env (fn)
(let ((str
(with-temp-buffer
(insert-file-contents fn)
(buffer-string))) lst)
(setq lst (split-string str "\000"))
(while lst
(setq cur (car lst))
(when (string-match "^\\(.*?\\)=\\(.*\\)" cur)
(setq var (match-string 1 cur))
(setq value (match-string 2 cur))
(setenv var value))
(setq lst (cdr lst)))))
(provide 'nebkor-functions)

View file

@ -1,3 +1,4 @@
;; -*- lexical-binding: t; -*-
;;;; `ediff'
(use-package ediff
:ensure nil
@ -74,4 +75,11 @@
(setq magit-repository-directories
'(("~/src/prototypes" . 1))))
(elpaca (difftastic :host "github.com" :repo "pkryger/difftastic.el")
(use-package difftastic))
(use-package difftastic-bindings
:after difftastic
:config (difftastic-bindings-mode))
(provide 'nebkor-git)

View file

@ -1,3 +1,4 @@
;; -*- lexical-binding: t; -*-
;;;; Tabs, indentation, and the TAB key
(use-package emacs
:ensure nil
@ -77,12 +78,12 @@
(use-package flymake
:ensure nil
:bind
( :map flymake-mode-map
(:map flymake-mode-map
("C-c ! s" . flymake-start)
("C-c ! l" . flymake-show-buffer-diagnostics) ; Emacs28
("C-c ! L" . flymake-show-project-diagnostics) ; Emacs28
("C-c ! n" . flymake-goto-next-error)
("C-c ! p" . flymake-goto-prev-error))
("M-g n" . flymake-goto-next-error)
("M-g p" . flymake-goto-prev-error))
:hook
(prog-mode . turn-on-flymake)
:config
@ -192,12 +193,14 @@
lsp-eldoc-render-all t
lsp-idle-delay 0.2
lsp-enable-snippet t
lsp-file-watch-threshold 3000
read-process-output-max (* 1024 1024))
:hook
(
(lsp-mode . lsp-enable-which-key-integration)
(lsp-mode . subword-mode)
(lsp-completion-mode . my/lsp-mode-setup-completion)
(go-ts-mode . lsp-mode)
;;(before-save . lsp-format-buffer)
))
@ -363,6 +366,31 @@ NS is the namespace information passed into the function by cider."
:after geiser-repl
:config (add-hook 'geiser-repl-mode-hook #'macrostep-geiser-setup))
(use-package go-ts-mode
:ensure nil
:hook
(go-ts-mode . go-format-on-save-mode)
(go-ts-mode . (lambda () (set (make-local-variable 'tab-width) 2)))
:custom
(go-mode-indent-offset 2)
:init
(add-to-list 'treesit-language-source-alist '(go "https://github.com/tree-sitter/tree-sitter-go"))
(add-to-list 'treesit-language-source-alist '(gomod "https://github.com/camdencheek/tree-sitter-go-mod"))
(add-to-list 'auto-mode-alist '("\\.go\\'" . go-ts-mode))
(add-to-list 'auto-mode-alist '("/go\\.mod\\'" . go-mod-ts-mode))
:config
(reformatter-define go-format
:program "goimports"
:args '("/dev/stdin")))
(use-package flycheck-golangci-lint
:ensure t
:hook
(go-ts-mode . flycheck-golangci-lint-setup))
(use-package terraform-mode
:ensure t)
;;; Settings for Interaction mode for Emacs-Lisp
(use-package ielm
:ensure nil

View file

@ -1,3 +1,4 @@
;; -*- lexical-binding: t; -*-
;;; Calendar
(use-package calendar
:ensure nil

View file

@ -1,3 +1,4 @@
;; -*- lexical-binding: t; -*-
(use-package imenu
:ensure nil
:config

View file

@ -1,222 +1,4 @@
;;; Denote (simple note-taking and file-naming)
;; Read the manual: <https://protesilaos.com/emacs/denote>. This does
;; not include all the useful features of Denote. I have a separate
;; private setup for those, as I need to test everything is in order.
(use-package denote
:ensure t
:hook
;; If you use Markdown or plain text files you want to fontify links
;; upon visiting the file (Org renders links as buttons right away).
((text-mode . denote-fontify-links-mode-maybe)
;; Highlight Denote file names in Dired buffers. Below is the
;; generic approach, which is great if you rename files Denote-style
;; in lots of places as I do.
;;
;; If you only want the `denote-dired-mode' in select directories,
;; then modify the variable `denote-dired-directories' and use the
;; following instead:
;;
;; (dired-mode . denote-dired-mode-in-directories)
(dired-mode . denote-dired-mode))
:bind
;; Denote DOES NOT define any key bindings. This is for the user to
;; decide. Here I only have a subset of what Denote offers.
( :map global-map
("C-c d n" . denote-create-note)
("C-c d N" . denote-silo-extras-select-silo-then-command)
("C-c d o" . denote-open-or-create)
("C-c d O" . denote-silo-extras-open-or-create)
("C-c d l" . denote-link-or-create)
("C-c d L" . denote-link-after-creating-with-command)
;; Note that `denote-rename-file' can work from any context, not
;; just Dired buffers. That is why we bind it here to the
;; `global-map'.
;;
;; Also see `denote-rename-file-using-front-matter' further below.
("C-c d r" . denote-rename-file)
;; If you intend to use Denote with a variety of file types, it is
;; easier to bind the link-related commands to the `global-map', as
;; shown here. Otherwise follow the same pattern for
;; `org-mode-map', `markdown-mode-map', and/or `text-mode-map'.
("C-c d j" . denote-journal-extras-new-entry)
("C-c d s" . denote-sort-dired)
;; Bindings to personal functions (defined below)
("C-c d p m" . vedang/denote-publishing-extras-new-microblog-entry)
("C-c d p b" . vedang/denote-publishing-extras-new-blog-entry)
:map text-mode-map
("C-c d B" . denote-backlinks)
("C-c d b" . denote-find-backlink)
;; Also see `denote-rename-file' further above.
("C-c d R" . denote-rename-file-using-front-matter)
("C-c d k" . denote-rename-file-keywords)
:map org-mode-map
("C-c d h" . denote-org-extras-link-to-heading)
("C-c d d l" . denote-org-extras-dblock-insert-links)
("C-c d d b" . denote-org-extras-dblock-insert-backlinks)
("C-c d d m" . denote-org-extras-dblock-insert-missing-links)
;; Key bindings specifically for Dired.
:map dired-mode-map
("C-c C-d C-i" . denote-dired-link-marked-notes)
("C-c C-d C-r" . denote-dired-rename-marked-files)
("C-c C-d C-k" . denote-dired-rename-marked-files-with-keywords)
("C-c C-d C-A" . denote-dired-rename-marked-files-add-keywords)
("C-c C-d C-K" . denote-dired-rename-marked-files-remove-keywords)
("C-c C-d C-f" . denote-dired-rename-marked-files-using-front-matter))
:config
(require 'denote-silo-extras)
(require 'denote-journal-extras)
(require 'denote-org-extras)
;; Remember to check the doc strings of those variables.
(let ((dir (string-trim (shell-command-to-string "echo $DENOTE_DIRECTORY"))))
(when (not (string-empty-p dir))
(setq denote-directory (expand-file-name dir))
(setq denote-journal-extras-directory (expand-file-name "journal" denote-directory))))
(setq denote-infer-keywords t)
(setq denote-sort-keywords t)
(setq denote-excluded-directories-regexp "data") ; external data related to headings is stored in these directories (web archives)
(setq denote-date-format nil) ; read its doc string
(setq denote-date-prompt-use-org-read-date t)
(setq denote-prompts '(title keywords subdirectory signature))
(setq denote-rename-confirmations nil) ; CAREFUL with this if you are not familiar with Denote!
(setq denote-save-buffers t)
(setq denote-rename-buffer-format "[D] %s %t%b")
;; Automatically rename Denote buffers when opening them so that
;; instead of their long file name they have a literal "[D]"
;; followed by the file's title. Read the doc string of
;; `denote-rename-buffer-format' for how to modify this.
(denote-rename-buffer-mode 1)
(setq denote-buffer-has-backlinks-string " (<--->)")
(setq denote-backlinks-show-context t)
(setq denote-org-store-link-to-heading t)
;; Journal settings
(setq denote-journal-extras-keyword "")
;; I use Yasnippet to expand these into a better template.
(add-to-list 'denote-templates '(reference-note . "reference"))
(add-to-list 'denote-templates '(morning . "morningpage"))
(add-to-list 'denote-templates '(emotion . "emotion"))
(add-to-list 'denote-templates '(insight . "insight"))
(add-to-list 'denote-templates '(weekly_intentions . "weekint"))
(add-to-list 'denote-templates '(weekly_report . "weekrpt"))
(add-to-list 'denote-templates '(sketch . "sketch"))
;; Front-matter for Org files
(setq denote-org-front-matter
":PROPERTIES:
:ID: %4$s
:CREATED: %2$s
:END:
#+title: %1$s
#+filetags: %3$s
#+date: %2$s
#+identifier: %4$s
\n")
(defun vedang/denote-publishing-extras-new-blog-entry (&optional date)
"Create a new blog entry.
With optional DATE as a prefix argument, prompt for a date. If
`denote-date-prompt-use-org-read-date' is non-nil, use the Org
date selection module.
When called from Lisp DATE is a string and has the same format as
that covered in the documentation of the `denote' function. It
is internally processed by `denote-parse-date'."
(interactive (list (when current-prefix-arg (denote-date-prompt))))
(let ((internal-date (denote-parse-date date))
(denote-directory (file-name-as-directory (expand-file-name "published" denote-directory))))
(denote
(denote-title-prompt)
'("draft")
nil nil date
;; See YASnippet
"fullblog")))
(defun vedang/denote-publishing-extras-new-microblog-entry (&optional date)
"Create a new microblog entry.
Set the title of the new entry according to the value of the user option
`denote-journal-extras-title-format'.
With optional DATE as a prefix argument, prompt for a date. If
`denote-date-prompt-use-org-read-date' is non-nil, use the Org
date selection module.
When called from Lisp DATE is a string and has the same format as
that covered in the documentation of the `denote' function. It
is internally processed by `denote-parse-date'."
(interactive (list (when current-prefix-arg (denote-date-prompt))))
(let ((internal-date (denote-parse-date date))
(denote-directory (file-name-as-directory (expand-file-name "published" denote-directory))))
(denote
(denote-journal-extras-daily--title-format internal-date)
'("draft" "microblog")
nil nil date
;; See YASnippet
"microblog")))
(defun vedang/denote-link-ol-get-id ()
"Get the CUSTOM_ID of the current entry.
If the entry already has a CUSTOM_ID, return it as-is, else create a new
one.
If we are creating a new ID, add a CREATED property with the current
timestamp as well.
This function is based on `denote-link-ol-get-id', with minor
modifications."
(interactive)
(let* ((pos (point))
(id (org-entry-get pos "CUSTOM_ID"))
(created (org-entry-get pos "CREATED")))
(if (and (stringp id) (string-match-p "\\S-" id))
id
(setq id (org-id-new "h"))
(org-entry-put pos "CUSTOM_ID" id))
(when (not created)
(setq created (format-time-string (org-time-stamp-format t t) (current-time)))
(org-entry-put pos "CREATED" created))
id))
(defun vedang/denote--split-luhman-sig (signature)
"Split numbers and letters in Luhmann-style SIGNATURE string."
(replace-regexp-in-string
"\\([a-zA-Z]+?\\)\\([0-9]\\)" "\\1=\\2"
(replace-regexp-in-string
"\\([0-9]+?\\)\\([a-zA-Z]\\)" "\\1=\\2"
signature)))
(defun vedang/denote--pad-sig (signature)
"Create a new signature with padded spaces for all components"
(combine-and-quote-strings
(mapcar
(lambda (x)
(string-pad x 5 32 t))
(split-string (vedang/denote--split-luhman-sig signature) "=" t))
"="))
(defun vedang/denote-sort-for-signatures (sig1 sig2)
"Return non-nil if SIG1 is smaller that SIG2.
Perform the comparison with `string<'."
(string< (vedang/denote--pad-sig sig1) (vedang/denote--pad-sig sig2)))
(setq denote-sort-signature-comparison-function #'vedang/denote-sort-for-signatures))
(use-package consult-denote
:ensure t
:bind
(("C-c d f" . consult-denote-find)
("C-c d g" . consult-denote-grep))
:config
(consult-denote-mode 1))
;; -*- lexical-binding: t; -*-
;;; PDF Tools for reading and annotating PDF files
(use-package pdf-tools
:ensure (:host github :repo "vedang/pdf-tools" :branch "master")

View file

@ -1,3 +1,4 @@
;; -*- lexical-binding: t; -*-
;;; Everything related to the look of Emacs
;;(add-to-list 'default-frame-alist '(background-color . "snow"))

View file

@ -1,3 +1,4 @@
;; -*- lexical-binding: t; -*-
;;; General window and buffer configurations
(use-package uniquify
:ensure nil