(add-hook 'minibuffer-exit-hook #'don/minibuffer-exit-hook)
#+END_SRC
* Modules
+** Tree sitter
+#+BEGIN_SRC emacs-lisp
+(use-package tree-sitter
+ :ensure t
+ :defer 1
+ :config
+ (global-tree-sitter-mode)
+ )
+(use-package tree-sitter-langs
+ :ensure t
+ :defer 1
+ :after tree-sitter
+ :config
+ (defun dla/python-function-at-point ()
+ "Return a list of function arguments
+
+Borrowed from https://xenodium.com/emacs-generate-a-swift-initializer/
+"
+ (interactive)
+ (cl-assert (seq-contains local-minor-modes 'tree-sitter-mode) "tree-sitter-mode not enabled")
+ (let* ((node (tree-sitter-node-at-point 'function_definition)
+ )
+ (args)
+ (arg)
+ (ret))
+ (unless node
+ (error "Not in function"))
+ (mapc
+ (lambda (item)
+ (cond ((eq 'func_name
+ (car item))
+ ; (when arg
+ ; (setq args (append args (list arg)))
+ ; )
+ (setq arg (list (cons 'function (tsc-node-text
+ (cdr item))))))
+ ((eq 'ident
+ (car item))
+ (setq arg (map-insert arg 'ident (tsc-node-text
+ (cdr item)))))
+ ((eq 'ident_type
+ (car item))
+ (setq arg (map-insert arg 'ident_type (tsc-node-text
+ (cdr item)))))
+ ((eq 'ret_type
+ (car item))
+ (setq arg (map-insert arg 'ret_type (tsc-node-text
+ (cdr item)))))
+ ))
+ (tsc-query-captures
+ (tsc-make-query tree-sitter-language
+ "(function_definition (identifier) @func_name (parameters [(identifier) @ident (typed_parameter (identifier) @ident (type) @ident_type)]) (type)? @ret_type)")
+ (tree-sitter-node-at-point 'function_definition) nil))
+ (when arg
+ (setq args (append args (list arg))))
+ args))
+
+)
+#+END_SRC
** Spacemacs theme
#+BEGIN_SRC emacs-lisp
(use-package spacemacs-common
(save-excursion
(outline-cycle)))))
-(bind-key "<tab>" #'malb/indent-fold-or-complete)
-(bind-key "C-<tab>" #'malb/toggle-fold)
+(bind-key "<tab>" 'malb/indent-fold-or-complete)
+(bind-key "C-<tab>" 'malb/toggle-fold)
#+END_SRC
** Tinyprocmail
;; Optionally enable cycling for `vertico-next' and `vertico-previous'.
;; (setq vertico-cycle t)
+ :custom
+ (vertico-grid-separator " ")
+ (vertico-grid-lookahead 50)
+ (vertico-multiform-categories
+ '((file reverse)
+ (consult-grep buffer)
+ (consult-location)
+ (imenu buffer)
+ (library reverse indexed)
+ (org-roam-node reverse indexed)
+ (t reverse)
+ ))
+ (vertico-multiform-commands
+ '(("flyspell-correct-*" grid reverse)
+ (org-refile grid reverse indexed)
+ (consult-yank-pop indexed)
+ (consult-flycheck)
+ (consult-lsp-diagnostics)
+ ))
:config
+ (vertico-multiform-mode)
(define-key vertico-map "\r" #'vertico-directory-enter)
(define-key vertico-map "\d" #'vertico-directory-delete-char)
(define-key vertico-map "\M-\d" #'vertico-directory-delete-word)
- (add-hook 'rfn-eshadow-update-overlay-hook #'vertico-directory-tidy
+ (add-hook 'rfn-eshadow-update-overlay-hook #'vertico-directory-tidy)
)
;; Persist history over Emacs restarts. Vertico sorts by history position.
#+END_SRC
** Password Store
#+BEGIN_SRC emacs-lisp
- (use-package password-store
- :ensure t
- :commands password-store-edit password-store-generate
- )
+(use-package password-store
+ :ensure t
+ :commands password-store-edit password-store-generate
+ :config
+ (defun dla/password-store-edit (entry)
+ "Edit password for ENTRY which doesn't require it to already exist"
+ (interactive (list (password-store--completing-read nil)))
+ (password-store--run-edit entry))
+ (advice-add 'password-store-edit :override #'dla/password-store-edit)
+ )
#+END_SRC
** CSS mode
#+BEGIN_SRC emacs-lisp
#+end_src
*** Sphinx Documentation
#+begin_src emacs-lisp :tangle yes
- (use-package numpydoc
- :ensure t
- :after python
- :bind (:map python-mode-map
- ("C-c C-n" . numpydoc-generate)))
- (use-package sphinx-doc
- :ensure t
- :config
- (sphinx-doc-mode t)
- (setq sphinx-doc-include-types t)
- :after python)
+(use-package numpydoc
+ :ensure t
+ :after python
+ :bind (:map python-mode-map
+ ("C-c C-n" . numpydoc-generate)))
+(use-package sphinx-doc
+ :ensure t
+ :config
+ (sphinx-doc-mode t)
+ (setq sphinx-doc-include-types t)
+ :after python)
+(use-package python-docstring
+ :ensure t
+ :after python
+ :hook
+ (python-mode . python-docstring-mode)
+ )
#+end_src
** Go language
#+BEGIN_SRC emacs-lisp
* Base emacs
** Reverting buffers
#+BEGIN_SRC emacs-lisp
- (use-package autorevert
- :diminish auto-revert-mode
- :config
- (setq global-auto-revert-non-file-buffers t
- global-auto-revert-ignore-modes '(pdf-view-mode)
- auto-revert-verbose nil)
- (global-auto-revert-mode 1))
+(use-package autorevert
+ :delight auto-revert-mode
+ :config
+ (setq global-auto-revert-non-file-buffers t
+ global-auto-revert-ignore-modes '(pdf-view-mode)
+ auto-revert-verbose nil)
+ (global-auto-revert-mode 1))
#+END_SRC
* Org Mode
** Use-package and load things
#+END_SRC
** Utility Functions
#+BEGIN_SRC emacs-lisp
- (defun bh/hide-other ()
- (interactive)
- (save-excursion
- (org-back-to-heading 'invisible-ok)
- (outline-hide-other)
- (org-cycle)
- (org-cycle)
- (org-cycle)))
-
- (defun bh/set-truncate-lines ()
- "Toggle value of truncate-lines and refresh window display."
- (interactive)
- (setq truncate-lines (not truncate-lines))
- ;; now refresh window display (an idiom from simple.el):
- (save-excursion
- (set-window-start (selected-window)
- (window-start (selected-window)))))
+(defun bh/hide-other ()
+ (interactive)
+ (save-excursion
+ (org-back-to-heading 'invisible-ok)
+ (outline-hide-other)
+ (org-cycle)
+ (org-cycle)
+ (org-cycle)))
+
+(defun bh/set-truncate-lines ()
+ "Toggle value of truncate-lines and refresh window display."
+ (interactive)
+ (setq truncate-lines (not truncate-lines))
+ ;; now refresh window display (an idiom from simple.el):
+ (save-excursion
+ (set-window-start (selected-window)
+ (window-start (selected-window)))))
- (defun bh/switch-to-scratch ()
- (interactive)
- (switch-to-buffer "*scratch*"))
+(defun bh/switch-to-scratch ()
+ (interactive)
+ (switch-to-buffer "*scratch*"))
- (setq org-use-fast-todo-selection t)
- (setq org-treat-S-cursor-todo-selection-as-state-change nil)
+(setq org-use-fast-todo-selection t)
+(setq org-treat-S-cursor-todo-selection-as-state-change nil)
; create function to create headlines in file. This comes from
; http://stackoverflow.com/questions/13340616/assign-ids-to-every-entry-in-org-mode