mirror of
https://github.com/SqrtMinusOne/dotfiles.git
synced 2025-12-10 19:23:03 +03:00
emacs: LLM, numpydoc
This commit is contained in:
parent
8261699952
commit
6ae5b30c14
4 changed files with 234 additions and 49 deletions
|
|
@ -118,6 +118,13 @@
|
||||||
#:start (make-forkexec-constructor '("sudo" "opensnitch-ui"))
|
#:start (make-forkexec-constructor '("sudo" "opensnitch-ui"))
|
||||||
#:stop (make-kill-destructor)))
|
#:stop (make-kill-destructor)))
|
||||||
|
|
||||||
|
(define ollama
|
||||||
|
(make <service>
|
||||||
|
#:provides '(ollama)
|
||||||
|
#:respawn? #t
|
||||||
|
#:start (make-forkexec-constructor '("/home/pavel/bin/ollama" "serve"))
|
||||||
|
#:stop (make-kill-destructor)))
|
||||||
|
|
||||||
(register-services
|
(register-services
|
||||||
mpd
|
mpd
|
||||||
sqrt-data-agent-mpd
|
sqrt-data-agent-mpd
|
||||||
|
|
@ -136,7 +143,7 @@
|
||||||
vnstatd
|
vnstatd
|
||||||
;; opensnitchd
|
;; opensnitchd
|
||||||
;; opensnitch-ui
|
;; opensnitch-ui
|
||||||
)
|
ollama)
|
||||||
|
|
||||||
(action 'shepherd 'daemonize)
|
(action 'shepherd 'daemonize)
|
||||||
|
|
||||||
|
|
|
||||||
117
.emacs.d/init.el
117
.emacs.d/init.el
|
|
@ -2734,13 +2734,16 @@ Returns (<buffer> . <workspace-index>) or nil."
|
||||||
(py-isort-buffer))
|
(py-isort-buffer))
|
||||||
(python-black-buffer))))
|
(python-black-buffer))))
|
||||||
|
|
||||||
(use-package sphinx-doc
|
(use-package numpydoc
|
||||||
:straight t
|
:straight t
|
||||||
:hook (python-mode . sphinx-doc-mode)
|
:commands (numpydoc-generate)
|
||||||
:config
|
:init
|
||||||
(my-leader-def
|
(my-leader-def
|
||||||
:keymaps 'sphinx-doc-mode-map
|
:keymaps 'python-ts-mode-map
|
||||||
"rd" 'sphinx-doc))
|
"rd" #'numpydoc-generate)
|
||||||
|
:config
|
||||||
|
(setq numpydoc-insertion-style 'prompt)
|
||||||
|
(setq numpydoc-insert-return-without-typehint nil))
|
||||||
|
|
||||||
(defun my/set-pipenv-pytest ()
|
(defun my/set-pipenv-pytest ()
|
||||||
(setq-local
|
(setq-local
|
||||||
|
|
@ -3082,27 +3085,29 @@ Returns (<buffer> . <workspace-index>) or nil."
|
||||||
(with-eval-after-load-norem 'org
|
(with-eval-after-load-norem 'org
|
||||||
(general-define-key
|
(general-define-key
|
||||||
:keymaps 'org-mode-map
|
:keymaps 'org-mode-map
|
||||||
"C-c d" 'org-decrypt-entry
|
"C-c d" #'org-decrypt-entry
|
||||||
"C-c e" 'org-encrypt-entry
|
"C-c e" #'org-encrypt-entry
|
||||||
"M-p" 'org-latex-preview
|
"M-p" #'org-latex-preview
|
||||||
"M-o" 'org-redisplay-inline-images)
|
"M-o" #'org-redisplay-inline-images)
|
||||||
|
|
||||||
(general-define-key
|
(general-define-key
|
||||||
:keymaps 'org-mode-map
|
:keymaps 'org-mode-map
|
||||||
:states '(normal emacs)
|
:states '(normal emacs)
|
||||||
"L" 'org-shiftright
|
"L" #'org-shiftright
|
||||||
"H" 'org-shiftleft
|
"H" #'org-shiftleft
|
||||||
"S-<next>" 'org-next-visible-heading
|
"S-<next>" #'org-next-visible-heading
|
||||||
"S-<prior>" 'org-previous-visible-heading
|
"S-<prior>" #'org-previous-visible-heading
|
||||||
"M-0" 'org-next-visible-heading
|
"M-0" #'org-next-visible-heading
|
||||||
"M-9" 'org-previous-visible-heading
|
"M-9" #'org-previous-visible-heading
|
||||||
"M-]" 'org-babel-next-src-block
|
"C-0" #'org-forward-heading-same-level
|
||||||
"M-[" 'org-babel-previous-src-block)
|
"C-9" #'org-backward-heading-same-level
|
||||||
|
"M-]" #'org-babel-next-src-block
|
||||||
|
"M-[" #'org-babel-previous-src-block)
|
||||||
|
|
||||||
(general-define-key
|
(general-define-key
|
||||||
:keymaps 'org-agenda-mode-map
|
:keymaps 'org-agenda-mode-map
|
||||||
"M-]" 'org-agenda-later
|
"M-]" #'org-agenda-later
|
||||||
"M-[" 'org-agenda-earlier)
|
"M-[" #'org-agenda-earlier)
|
||||||
|
|
||||||
(general-nmap :keymaps 'org-mode-map "RET" 'org-ctrl-c-ctrl-c))
|
(general-nmap :keymaps 'org-mode-map "RET" 'org-ctrl-c-ctrl-c))
|
||||||
|
|
||||||
|
|
@ -3192,6 +3197,13 @@ With ARG, repeats or can move backward if negative."
|
||||||
(interactive)
|
(interactive)
|
||||||
(org-babel-jupyter-aliases-from-kernelspecs t))
|
(org-babel-jupyter-aliases-from-kernelspecs t))
|
||||||
|
|
||||||
|
(defun my/org-load-jupyter ()
|
||||||
|
(interactive)
|
||||||
|
(org-babel-do-load-languages
|
||||||
|
'org-babel-load-languages
|
||||||
|
'((jupyter . t)))
|
||||||
|
(my/jupyter-refesh-langs))
|
||||||
|
|
||||||
(use-package ob-hy
|
(use-package ob-hy
|
||||||
:after (org)
|
:after (org)
|
||||||
:if (not my/remote-server)
|
:if (not my/remote-server)
|
||||||
|
|
@ -3253,7 +3265,6 @@ With ARG, repeats or can move backward if negative."
|
||||||
(shell . t)
|
(shell . t)
|
||||||
(plantuml . t)
|
(plantuml . t)
|
||||||
(octave . t)
|
(octave . t)
|
||||||
,@(unless my/is-termux '((jupyter . t)))
|
|
||||||
(sparql . t)
|
(sparql . t)
|
||||||
(gnuplot . t)))
|
(gnuplot . t)))
|
||||||
|
|
||||||
|
|
@ -4099,6 +4110,17 @@ skip exactly those headlines that do not match."
|
||||||
(org-agenda-prefix-format " %i %-12:c")
|
(org-agenda-prefix-format " %i %-12:c")
|
||||||
(org-agenda-hide-tags-regexp ".")))))))
|
(org-agenda-hide-tags-regexp ".")))))))
|
||||||
|
|
||||||
|
(use-package org-yaap
|
||||||
|
:straight (org-yaap :type git :host gitlab :repo "SqrtMinusOne/org-yaap")
|
||||||
|
:after (org)
|
||||||
|
:if (not my/nested-emacs)
|
||||||
|
:disabled t
|
||||||
|
:config
|
||||||
|
(org-yaap-mode 1)
|
||||||
|
(setq org-yaap-alert-before '(10 1))
|
||||||
|
(setq org-yaap-alert-title "PROXIMITY ALERT")
|
||||||
|
(setq org-yaap-todo-keywords-only '("FUTURE")))
|
||||||
|
|
||||||
(setq my/org-alert-notify-times '(600 60))
|
(setq my/org-alert-notify-times '(600 60))
|
||||||
|
|
||||||
(setq my/org-alert--alerts (make-hash-table :test #'equal))
|
(setq my/org-alert--alerts (make-hash-table :test #'equal))
|
||||||
|
|
@ -6409,7 +6431,7 @@ by the `my/elfeed-youtube-subtitles' function."
|
||||||
(setq-local subed-mpv-video-file (elfeed-entry-link entry))
|
(setq-local subed-mpv-video-file (elfeed-entry-link entry))
|
||||||
(subed-mpv--play subed-mpv-video-file))
|
(subed-mpv--play subed-mpv-video-file))
|
||||||
|
|
||||||
(defun my/invoke-whisper--direct (input output-dir remove-wav)
|
(defun my/invoke-whisper--direct (input output-dir &optional remove-wav)
|
||||||
"Extract subtitles from a WAV audio file.
|
"Extract subtitles from a WAV audio file.
|
||||||
|
|
||||||
INPUT is the absolute path to audio file, OUTPUT-DIR is the path to
|
INPUT is the absolute path to audio file, OUTPUT-DIR is the path to
|
||||||
|
|
@ -6418,8 +6440,8 @@ the directory with resulting files."
|
||||||
(buffer (generate-new-buffer "whisper"))
|
(buffer (generate-new-buffer "whisper"))
|
||||||
(proc (start-process
|
(proc (start-process
|
||||||
"whisper" buffer
|
"whisper" buffer
|
||||||
"whisper-cpp" "--model" "/home/pavel/.whisper/ggml-medium.en.bin"
|
"whisper-cpp" "--model" "/home/pavel/.whisper/ggml-medium.bin"
|
||||||
"-otxt" "-ovtt" "-osrt" input)))
|
"-otxt" "-ovtt" "-osrt" "-l" "auto" input)))
|
||||||
(set-process-sentinel
|
(set-process-sentinel
|
||||||
proc
|
proc
|
||||||
(lambda (process _msg)
|
(lambda (process _msg)
|
||||||
|
|
@ -7058,6 +7080,7 @@ ENTRY is an instance of `elfeed-entry'."
|
||||||
;; Hide spoilers by default
|
;; Hide spoilers by default
|
||||||
(setq-default mastodon-toot--content-warning t)
|
(setq-default mastodon-toot--content-warning t)
|
||||||
(setq mastodon-media--avatar-height 40)
|
(setq mastodon-media--avatar-height 40)
|
||||||
|
(setq mastodon-tl--timeline-posts-count "40")
|
||||||
(setq mastodon-tl--show-avatars t)
|
(setq mastodon-tl--show-avatars t)
|
||||||
;; The default emojis take two characters for me
|
;; The default emojis take two characters for me
|
||||||
(setq mastodon-tl--symbols
|
(setq mastodon-tl--symbols
|
||||||
|
|
@ -7366,7 +7389,7 @@ base toot."
|
||||||
:straight (:host github :repo "alphapapa/ement.el")
|
:straight (:host github :repo "alphapapa/ement.el")
|
||||||
:commands (ement-connect)
|
:commands (ement-connect)
|
||||||
:init
|
:init
|
||||||
(my-leader-def "ai" #'my/ement)
|
(my-leader-def "ax" #'my/ement)
|
||||||
:config
|
:config
|
||||||
(setq ement-room-list-auto-update t)
|
(setq ement-room-list-auto-update t)
|
||||||
(setq ement-room-mark-rooms-read 'send)
|
(setq ement-room-mark-rooms-read 'send)
|
||||||
|
|
@ -7638,7 +7661,9 @@ base toot."
|
||||||
(google-translate-at-point-reverse)))
|
(google-translate-at-point-reverse)))
|
||||||
(setq google-translate-translation-directions-alist
|
(setq google-translate-translation-directions-alist
|
||||||
'(("en" . "ru")
|
'(("en" . "ru")
|
||||||
("ru" . "en"))))
|
("ru" . "en")
|
||||||
|
("de" . "en")
|
||||||
|
("en" . "de"))))
|
||||||
|
|
||||||
(my-leader-def
|
(my-leader-def
|
||||||
:infix "at"
|
:infix "at"
|
||||||
|
|
@ -7768,6 +7793,48 @@ base toot."
|
||||||
(add-hook 'sx-question-mode-hook #'doom-modeline-mode)
|
(add-hook 'sx-question-mode-hook #'doom-modeline-mode)
|
||||||
(add-hook 'sx-question-list-mode-hook #'doom-modeline-mode))
|
(add-hook 'sx-question-list-mode-hook #'doom-modeline-mode))
|
||||||
|
|
||||||
|
(use-package gptel
|
||||||
|
:straight t
|
||||||
|
:init
|
||||||
|
(my-leader-def
|
||||||
|
:infix "ai"
|
||||||
|
"" '(:wk "AI")
|
||||||
|
"i" #'gptel)
|
||||||
|
:commands (gptel gptel-send gptel-menu)
|
||||||
|
:config
|
||||||
|
(setq gptel-model "llama3:latest")
|
||||||
|
(setq gptel-backend
|
||||||
|
(gptel-make-ollama "Ollama"
|
||||||
|
:host "localhost:11434"
|
||||||
|
:stream t
|
||||||
|
:models '("llama3:latest")))
|
||||||
|
(general-define-key
|
||||||
|
:keymaps '(gptel-mode-map)
|
||||||
|
:states '(insert normal)
|
||||||
|
"C-<return>" 'gptel-send))
|
||||||
|
|
||||||
|
(use-package ellama
|
||||||
|
:straight t
|
||||||
|
:init
|
||||||
|
(setq ellama-language "English")
|
||||||
|
:config
|
||||||
|
(require 'llm-ollama)
|
||||||
|
(my-leader-def
|
||||||
|
"aie" '(:wk "ellama" :keymap ellama-command-map))
|
||||||
|
(which-key-add-key-based-replacements
|
||||||
|
(rx "SPC a i e a") "ask"
|
||||||
|
(rx "SPC a i e c") "code"
|
||||||
|
(rx "SPC a i e d") "define"
|
||||||
|
(rx "SPC a i e i") "improve"
|
||||||
|
(rx "SPC a i e m") "make"
|
||||||
|
(rx "SPC a i e p") "provider"
|
||||||
|
(rx "SPC a i e s") "summarize"
|
||||||
|
(rx "SPC a i e t") "translate/complete"
|
||||||
|
(rx "SPC a i e x") "context")
|
||||||
|
(setq ellama-provider (make-llm-ollama
|
||||||
|
:chat-model "llama3:latest"
|
||||||
|
:embedding-model "llama3:latest")))
|
||||||
|
|
||||||
(use-package ini
|
(use-package ini
|
||||||
:straight (:host github :repo "daniel-ness/ini.el"))
|
:straight (:host github :repo "daniel-ness/ini.el"))
|
||||||
|
|
||||||
|
|
|
||||||
11
Desktop.org
11
Desktop.org
|
|
@ -4171,6 +4171,15 @@ nix-env -I opensnitchd opensnitch-ui
|
||||||
#:start (make-forkexec-constructor '("sudo" "opensnitch-ui"))
|
#:start (make-forkexec-constructor '("sudo" "opensnitch-ui"))
|
||||||
#:stop (make-kill-destructor)))
|
#:stop (make-kill-destructor)))
|
||||||
#+end_src
|
#+end_src
|
||||||
|
** ollama
|
||||||
|
#+begin_src scheme
|
||||||
|
(define ollama
|
||||||
|
(make <service>
|
||||||
|
#:provides '(ollama)
|
||||||
|
#:respawn? #t
|
||||||
|
#:start (make-forkexec-constructor '("/home/pavel/bin/ollama" "serve"))
|
||||||
|
#:stop (make-kill-destructor)))
|
||||||
|
#+end_src
|
||||||
|
|
||||||
** Shepherd config
|
** Shepherd config
|
||||||
For some reason, running start on a one-shot service started to hang shepherd, not sure why... Turining these off for now.
|
For some reason, running start on a one-shot service started to hang shepherd, not sure why... Turining these off for now.
|
||||||
|
|
@ -4195,7 +4204,7 @@ Register services:
|
||||||
vnstatd
|
vnstatd
|
||||||
;; opensnitchd
|
;; opensnitchd
|
||||||
;; opensnitch-ui
|
;; opensnitch-ui
|
||||||
)
|
ollama)
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
Daemonize shepherd
|
Daemonize shepherd
|
||||||
|
|
|
||||||
146
Emacs.org
146
Emacs.org
|
|
@ -3792,10 +3792,11 @@ The following binding calls yapf & isort on the buffer
|
||||||
(py-isort-buffer))
|
(py-isort-buffer))
|
||||||
(python-black-buffer))))
|
(python-black-buffer))))
|
||||||
#+end_src
|
#+end_src
|
||||||
*** sphinx-doc
|
*** OFF sphinx-doc
|
||||||
|
CLOSED: [2024-04-23 Tue 12:33]
|
||||||
A package to generate sphinx-compatible docstrings.
|
A package to generate sphinx-compatible docstrings.
|
||||||
|
|
||||||
#+begin_src emacs-lisp
|
#+begin_src emacs-lisp :tangle no
|
||||||
(use-package sphinx-doc
|
(use-package sphinx-doc
|
||||||
:straight t
|
:straight t
|
||||||
:hook (python-mode . sphinx-doc-mode)
|
:hook (python-mode . sphinx-doc-mode)
|
||||||
|
|
@ -3804,6 +3805,22 @@ A package to generate sphinx-compatible docstrings.
|
||||||
:keymaps 'sphinx-doc-mode-map
|
:keymaps 'sphinx-doc-mode-map
|
||||||
"rd" 'sphinx-doc))
|
"rd" 'sphinx-doc))
|
||||||
#+end_src
|
#+end_src
|
||||||
|
*** numpydoc
|
||||||
|
[[https://github.com/douglasdavis/numpydoc.el][numpydoc.el]] is a package to generate docstring in Python functions.
|
||||||
|
|
||||||
|
#+begin_src emacs-lisp
|
||||||
|
(use-package numpydoc
|
||||||
|
:straight t
|
||||||
|
:commands (numpydoc-generate)
|
||||||
|
:init
|
||||||
|
(my-leader-def
|
||||||
|
:keymaps 'python-ts-mode-map
|
||||||
|
"rd" #'numpydoc-generate)
|
||||||
|
:config
|
||||||
|
(setq numpydoc-insertion-style 'prompt)
|
||||||
|
(setq numpydoc-insert-return-without-typehint nil))
|
||||||
|
#+end_src
|
||||||
|
|
||||||
*** pytest
|
*** pytest
|
||||||
[[https://docs.pytest.org/en/6.2.x/][pytest]] is a unit testing framework for Python.
|
[[https://docs.pytest.org/en/6.2.x/][pytest]] is a unit testing framework for Python.
|
||||||
|
|
||||||
|
|
@ -4302,27 +4319,29 @@ I've moved this block above because the =my-leader-def= expression in the next b
|
||||||
(with-eval-after-load-norem 'org
|
(with-eval-after-load-norem 'org
|
||||||
(general-define-key
|
(general-define-key
|
||||||
:keymaps 'org-mode-map
|
:keymaps 'org-mode-map
|
||||||
"C-c d" 'org-decrypt-entry
|
"C-c d" #'org-decrypt-entry
|
||||||
"C-c e" 'org-encrypt-entry
|
"C-c e" #'org-encrypt-entry
|
||||||
"M-p" 'org-latex-preview
|
"M-p" #'org-latex-preview
|
||||||
"M-o" 'org-redisplay-inline-images)
|
"M-o" #'org-redisplay-inline-images)
|
||||||
|
|
||||||
(general-define-key
|
(general-define-key
|
||||||
:keymaps 'org-mode-map
|
:keymaps 'org-mode-map
|
||||||
:states '(normal emacs)
|
:states '(normal emacs)
|
||||||
"L" 'org-shiftright
|
"L" #'org-shiftright
|
||||||
"H" 'org-shiftleft
|
"H" #'org-shiftleft
|
||||||
"S-<next>" 'org-next-visible-heading
|
"S-<next>" #'org-next-visible-heading
|
||||||
"S-<prior>" 'org-previous-visible-heading
|
"S-<prior>" #'org-previous-visible-heading
|
||||||
"M-0" 'org-next-visible-heading
|
"M-0" #'org-next-visible-heading
|
||||||
"M-9" 'org-previous-visible-heading
|
"M-9" #'org-previous-visible-heading
|
||||||
"M-]" 'org-babel-next-src-block
|
"C-0" #'org-forward-heading-same-level
|
||||||
"M-[" 'org-babel-previous-src-block)
|
"C-9" #'org-backward-heading-same-level
|
||||||
|
"M-]" #'org-babel-next-src-block
|
||||||
|
"M-[" #'org-babel-previous-src-block)
|
||||||
|
|
||||||
(general-define-key
|
(general-define-key
|
||||||
:keymaps 'org-agenda-mode-map
|
:keymaps 'org-agenda-mode-map
|
||||||
"M-]" 'org-agenda-later
|
"M-]" #'org-agenda-later
|
||||||
"M-[" 'org-agenda-earlier)
|
"M-[" #'org-agenda-earlier)
|
||||||
|
|
||||||
(general-nmap :keymaps 'org-mode-map "RET" 'org-ctrl-c-ctrl-c))
|
(general-nmap :keymaps 'org-mode-map "RET" 'org-ctrl-c-ctrl-c))
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
@ -4409,6 +4428,7 @@ A function to open a file from =org-directory=, excluding a few directories like
|
||||||
(concat org-directory "/"
|
(concat org-directory "/"
|
||||||
(completing-read "Org file: " files)))))
|
(completing-read "Org file: " files)))))
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
** Literate programing
|
** Literate programing
|
||||||
*** Python & Jupyter
|
*** Python & Jupyter
|
||||||
Use jupyter kernels for Org Mode.
|
Use jupyter kernels for Org Mode.
|
||||||
|
|
@ -4444,6 +4464,16 @@ Fortunately, =emacs-jupyter= provides a function for that problem as well.
|
||||||
(interactive)
|
(interactive)
|
||||||
(org-babel-jupyter-aliases-from-kernelspecs t))
|
(org-babel-jupyter-aliases-from-kernelspecs t))
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
|
A function to load =jupyter=. The problem with doing that on startup is that it tried to locate the =jupyter= executable, which I have only in an environment.
|
||||||
|
#+begin_src emacs-lisp
|
||||||
|
(defun my/org-load-jupyter ()
|
||||||
|
(interactive)
|
||||||
|
(org-babel-do-load-languages
|
||||||
|
'org-babel-load-languages
|
||||||
|
'((jupyter . t)))
|
||||||
|
(my/jupyter-refesh-langs))
|
||||||
|
#+end_src
|
||||||
*** Hy
|
*** Hy
|
||||||
#+begin_src emacs-lisp
|
#+begin_src emacs-lisp
|
||||||
(use-package ob-hy
|
(use-package ob-hy
|
||||||
|
|
@ -4523,7 +4553,6 @@ Enable languages
|
||||||
(shell . t)
|
(shell . t)
|
||||||
(plantuml . t)
|
(plantuml . t)
|
||||||
(octave . t)
|
(octave . t)
|
||||||
,@(unless my/is-termux '((jupyter . t)))
|
|
||||||
(sparql . t)
|
(sparql . t)
|
||||||
(gnuplot . t)))
|
(gnuplot . t)))
|
||||||
|
|
||||||
|
|
@ -5635,6 +5664,21 @@ And the agendas themselves:
|
||||||
|
|
||||||
Okay, I will set up +org-alert+ some custom alert system.
|
Okay, I will set up +org-alert+ some custom alert system.
|
||||||
|
|
||||||
|
There's also [[https://gitlab.com/grinn.amy/org-yaap][org-yaap]] by Amy Grinn, but I opt for my system for now.
|
||||||
|
|
||||||
|
#+begin_src emacs-lisp
|
||||||
|
(use-package org-yaap
|
||||||
|
:straight (org-yaap :type git :host gitlab :repo "SqrtMinusOne/org-yaap")
|
||||||
|
:after (org)
|
||||||
|
:if (not my/nested-emacs)
|
||||||
|
:disabled t
|
||||||
|
:config
|
||||||
|
(org-yaap-mode 1)
|
||||||
|
(setq org-yaap-alert-before '(10 1))
|
||||||
|
(setq org-yaap-alert-title "PROXIMITY ALERT")
|
||||||
|
(setq org-yaap-todo-keywords-only '("FUTURE")))
|
||||||
|
#+end_src
|
||||||
|
|
||||||
I want to have multiple warnings, let it be 10 minutes in advance and 1 minute in advance for now.
|
I want to have multiple warnings, let it be 10 minutes in advance and 1 minute in advance for now.
|
||||||
#+begin_src emacs-lisp
|
#+begin_src emacs-lisp
|
||||||
(setq my/org-alert-notify-times '(600 60))
|
(setq my/org-alert-notify-times '(600 60))
|
||||||
|
|
@ -8921,7 +8965,7 @@ Running the program from Emacs is rather straightforward with [[https://www.gnu.
|
||||||
I'm using an English-language-only model because that's the only language I need at the moment.
|
I'm using an English-language-only model because that's the only language I need at the moment.
|
||||||
|
|
||||||
#+begin_src emacs-lisp
|
#+begin_src emacs-lisp
|
||||||
(defun my/invoke-whisper--direct (input output-dir remove-wav)
|
(defun my/invoke-whisper--direct (input output-dir &optional remove-wav)
|
||||||
"Extract subtitles from a WAV audio file.
|
"Extract subtitles from a WAV audio file.
|
||||||
|
|
||||||
INPUT is the absolute path to audio file, OUTPUT-DIR is the path to
|
INPUT is the absolute path to audio file, OUTPUT-DIR is the path to
|
||||||
|
|
@ -8930,8 +8974,8 @@ the directory with resulting files."
|
||||||
(buffer (generate-new-buffer "whisper"))
|
(buffer (generate-new-buffer "whisper"))
|
||||||
(proc (start-process
|
(proc (start-process
|
||||||
"whisper" buffer
|
"whisper" buffer
|
||||||
"whisper-cpp" "--model" "/home/pavel/.whisper/ggml-medium.en.bin"
|
"whisper-cpp" "--model" "/home/pavel/.whisper/ggml-medium.bin"
|
||||||
"-otxt" "-ovtt" "-osrt" input)))
|
"-otxt" "-ovtt" "-osrt" "-l" "auto" input)))
|
||||||
(set-process-sentinel
|
(set-process-sentinel
|
||||||
proc
|
proc
|
||||||
(lambda (process _msg)
|
(lambda (process _msg)
|
||||||
|
|
@ -9822,6 +9866,7 @@ The default UI is rather rough, but Nicolas Rougier's [[https://github.com/rougi
|
||||||
;; Hide spoilers by default
|
;; Hide spoilers by default
|
||||||
(setq-default mastodon-toot--content-warning t)
|
(setq-default mastodon-toot--content-warning t)
|
||||||
(setq mastodon-media--avatar-height 40)
|
(setq mastodon-media--avatar-height 40)
|
||||||
|
(setq mastodon-tl--timeline-posts-count "40")
|
||||||
(setq mastodon-tl--show-avatars t)
|
(setq mastodon-tl--show-avatars t)
|
||||||
;; The default emojis take two characters for me
|
;; The default emojis take two characters for me
|
||||||
(setq mastodon-tl--symbols
|
(setq mastodon-tl--symbols
|
||||||
|
|
@ -10181,7 +10226,7 @@ And the prefix itself:
|
||||||
:straight (:host github :repo "alphapapa/ement.el")
|
:straight (:host github :repo "alphapapa/ement.el")
|
||||||
:commands (ement-connect)
|
:commands (ement-connect)
|
||||||
:init
|
:init
|
||||||
(my-leader-def "ai" #'my/ement)
|
(my-leader-def "ax" #'my/ement)
|
||||||
:config
|
:config
|
||||||
(setq ement-room-list-auto-update t)
|
(setq ement-room-list-auto-update t)
|
||||||
(setq ement-room-mark-rooms-read 'send)
|
(setq ement-room-mark-rooms-read 'send)
|
||||||
|
|
@ -10509,7 +10554,9 @@ References:
|
||||||
(google-translate-at-point-reverse)))
|
(google-translate-at-point-reverse)))
|
||||||
(setq google-translate-translation-directions-alist
|
(setq google-translate-translation-directions-alist
|
||||||
'(("en" . "ru")
|
'(("en" . "ru")
|
||||||
("ru" . "en"))))
|
("ru" . "en")
|
||||||
|
("de" . "en")
|
||||||
|
("en" . "de"))))
|
||||||
|
|
||||||
(my-leader-def
|
(my-leader-def
|
||||||
:infix "at"
|
:infix "at"
|
||||||
|
|
@ -10661,6 +10708,61 @@ There is a package called =devdocs= that does more or less the same, but I like
|
||||||
(add-hook 'sx-question-mode-hook #'doom-modeline-mode)
|
(add-hook 'sx-question-mode-hook #'doom-modeline-mode)
|
||||||
(add-hook 'sx-question-list-mode-hook #'doom-modeline-mode))
|
(add-hook 'sx-question-list-mode-hook #'doom-modeline-mode))
|
||||||
#+end_src
|
#+end_src
|
||||||
|
** LLM
|
||||||
|
Trying out LLM integrations.
|
||||||
|
|
||||||
|
I don't have access to any proprietary APIs, but LLaMA 3 8b with [[https://ollama.com/][ollama]] works for some purposes.
|
||||||
|
|
||||||
|
*** gptel
|
||||||
|
[[https://github.com/karthink/gptel][gtpel]] is a package that provides an interface to chat with LLMs.
|
||||||
|
|
||||||
|
#+begin_src emacs-lisp
|
||||||
|
(use-package gptel
|
||||||
|
:straight t
|
||||||
|
:init
|
||||||
|
(my-leader-def
|
||||||
|
:infix "ai"
|
||||||
|
"" '(:wk "AI")
|
||||||
|
"i" #'gptel)
|
||||||
|
:commands (gptel gptel-send gptel-menu)
|
||||||
|
:config
|
||||||
|
(setq gptel-model "llama3:latest")
|
||||||
|
(setq gptel-backend
|
||||||
|
(gptel-make-ollama "Ollama"
|
||||||
|
:host "localhost:11434"
|
||||||
|
:stream t
|
||||||
|
:models '("llama3:latest")))
|
||||||
|
(general-define-key
|
||||||
|
:keymaps '(gptel-mode-map)
|
||||||
|
:states '(insert normal)
|
||||||
|
"C-<return>" 'gptel-send))
|
||||||
|
#+end_src
|
||||||
|
*** ellama
|
||||||
|
[[https://github.com/s-kostyaev/ellama][ellama]] provides commands that feed things from Emacs buffers into LLMs with various prompts.
|
||||||
|
|
||||||
|
#+begin_src emacs-lisp
|
||||||
|
(use-package ellama
|
||||||
|
:straight t
|
||||||
|
:init
|
||||||
|
(setq ellama-language "English")
|
||||||
|
:config
|
||||||
|
(require 'llm-ollama)
|
||||||
|
(my-leader-def
|
||||||
|
"aie" '(:wk "ellama" :keymap ellama-command-map))
|
||||||
|
(which-key-add-key-based-replacements
|
||||||
|
(rx "SPC a i e a") "ask"
|
||||||
|
(rx "SPC a i e c") "code"
|
||||||
|
(rx "SPC a i e d") "define"
|
||||||
|
(rx "SPC a i e i") "improve"
|
||||||
|
(rx "SPC a i e m") "make"
|
||||||
|
(rx "SPC a i e p") "provider"
|
||||||
|
(rx "SPC a i e s") "summarize"
|
||||||
|
(rx "SPC a i e t") "translate/complete"
|
||||||
|
(rx "SPC a i e x") "context")
|
||||||
|
(setq ellama-provider (make-llm-ollama
|
||||||
|
:chat-model "llama3:latest"
|
||||||
|
:embedding-model "llama3:latest")))
|
||||||
|
#+end_src
|
||||||
** Declarative filesystem management
|
** Declarative filesystem management
|
||||||
My filesystem is, shall we say, not the most orderly place.
|
My filesystem is, shall we say, not the most orderly place.
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue