]> git.donarmstrong.com Git - lib.git/blobdiff - emacs_el/configuration/don-configuration.org
include python-docstring
[lib.git] / emacs_el / configuration / don-configuration.org
index 003a8188062e24dbba26cc85a0113b40fe1087f5..160c357db1d5e42e65a142fd10097cfd31061cd7 100644 (file)
   (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
@@ -665,8 +724,8 @@ Enable/disable company completion from ispell dictionaries ([[https://github.com
          (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
 
@@ -808,11 +867,31 @@ Attempts to automatically identify the right indentation for a file
 
   ;; 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.
@@ -1399,10 +1478,16 @@ From http://julien.danjou.info/projects/emacs-packages#rainbow-mode, this colori
 #+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
@@ -1478,17 +1563,23 @@ From http://julien.danjou.info/projects/emacs-packages#rainbow-mode, this colori
 #+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
@@ -1581,13 +1672,13 @@ From http://julien.danjou.info/projects/emacs-packages#rainbow-mode, this colori
 * 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
@@ -1842,30 +1933,30 @@ From http://julien.danjou.info/projects/emacs-packages#rainbow-mode, this colori
 #+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