From 2b11ae1f67b2e7c1ef3e64f4076e45ac9b8095c2 Mon Sep 17 00:00:00 2001 From: SqrtMinusOne Date: Mon, 30 Jan 2023 01:07:51 +0300 Subject: [PATCH] feat(emacs): termux --- .emacs.d/init.el | 54 +++++++++++++++++++++++++++++------------------- Emacs.org | 45 ++++++++++++++++++++++++++-------------- 2 files changed, 62 insertions(+), 37 deletions(-) diff --git a/.emacs.d/init.el b/.emacs.d/init.el index 727dae1..f5d955b 100644 --- a/.emacs.d/init.el +++ b/.emacs.d/init.el @@ -829,6 +829,9 @@ then it takes a second \\[keyboard-quit] to abort the minibuffer." (menu-bar-mode -1) (scroll-bar-mode -1)) +(when my/is-termux + (menu-bar-mode -1)) + ;; (set-frame-parameter (selected-frame) 'alpha '(90 . 90)) ;; (add-to-list 'default-frame-alist '(alpha . (90 . 90))) @@ -868,6 +871,7 @@ then it takes a second \\[keyboard-quit] to abort the minibuffer." (use-package olivetti :straight t + :if (display-graphic-p) :config (setq-default olivetti-body-width 86)) @@ -886,7 +890,6 @@ then it takes a second \\[keyboard-quit] to abort the minibuffer." (use-package doom-themes :straight t - :if (not my/is-termux) :config (setq doom-themes-enable-bold t doom-themes-enable-italic t) @@ -1307,7 +1310,7 @@ influence of C1 on the result." (use-package tree-sitter :straight t - :if (not my/remote-server) + :if (not (or my/remote-server my/is-termux)) :hook ((typescript-mode . my/tree-sitter-if-not-mmm) (js-mode . my/tree-sitter-if-not-mmm) (python-mode . tree-sitter-mode) @@ -1320,6 +1323,7 @@ influence of C1 on the result." (use-package dap-mode :straight t + :if (not (or my/remote-server my/is-termux)) :commands (dap-debug) :init (setq lsp-enable-dap-auto-configure nil) @@ -1575,8 +1579,8 @@ Returns ( . ) or nil." (defun my/copilot-tab () (interactive) - (or (copilot-accept-completion) - (when (my/should-run-emmet-p) (my/emmet-or-tab)) + (or (when (my/should-run-emmet-p) (my/emmet-or-tab)) + (copilot-accept-completion) (when (and (eq evil-state 'normal) (or hs-minor-mode outline-minor-mode)) (evil-toggle-fold) @@ -1586,7 +1590,7 @@ Returns ( . ) or nil." (use-package copilot :straight (:host github :repo "SqrtMinusOne/copilot.el" :files ("dist" "*.el")) :commands (copilot-mode) - :if (not my/remote-server) + :if (not (or my/remote-server my/is-termux)) :init (add-hook 'prog-mode-hook #'copilot-mode) :config @@ -1735,7 +1739,8 @@ Returns ( . ) or nil." (when (string-match-p (rx ".vue" eos) (buffer-name)) (setq-local web-mode-script-padding 0) (setq-local web-mode-style-padding 0) - (setq-local create-lockfiles nil))) + (setq-local create-lockfiles nil) + (setq-local web-mode-enable-auto-pairing nil))) (add-hook 'web-mode-hook 'my/web-mode-vue-setup) (add-hook 'editorconfig-after-apply-functions 'my/web-mode-vue-setup) @@ -2320,9 +2325,10 @@ Returns ( . ) or nil." :keymaps 'python-mode-map "rr" (lambda () (interactive) - (unless (and (fboundp #'org-src-edit-buffer-p) (org-src-edit-buffer-p)) - (py-isort-buffer)) - (python-black-buffer))) + (save-excursion + (unless (and (fboundp #'org-src-edit-buffer-p) (org-src-edit-buffer-p)) + (py-isort-buffer)) + (python-black-buffer)))) (use-package sphinx-doc :straight t @@ -2564,7 +2570,7 @@ Returns ( . ) or nil." (unless (file-exists-p org-directory) (mkdir org-directory t)) :config - (setq org-startup-indented t) + (setq org-startup-indented (not my/is-termux)) (setq org-return-follows-link t) (setq org-src-tab-acts-natively nil) (add-hook 'org-mode-hook 'smartparens-mode) @@ -2605,9 +2611,10 @@ Returns ( . ) or nil." (require 'ox-extra) (ox-extras-activate '(latex-header-blocks ignore-headlines))) -(use-package ol-notmuch - :straight t - :after (org)) +(unless (or my/remote-server my/is-termux) + (use-package ol-notmuch + :straight t + :after (org notmuch))) (with-eval-after-load 'org (require 'org-tempo) @@ -2629,7 +2636,7 @@ Returns ( . ) or nil." (use-package jupyter :straight t :after (org) - :if (not my/remote-server)) + :if (not (or my/remote-server my/is-termux))) (defun my/jupyter-refresh-kernelspecs () "Refresh Jupyter kernelspecs" @@ -2682,7 +2689,7 @@ Returns ( . ) or nil." (with-eval-after-load-norem 'org (org-babel-do-load-languages 'org-babel-load-languages - '((emacs-lisp . t) + `((emacs-lisp . t) (python . t) (sql . t) ;; (typescript .t) @@ -2690,7 +2697,7 @@ Returns ( . ) or nil." (shell . t) (plantuml . t) (octave . t) - (jupyter . t) + ,@(unless my/is-termux '((jupyter . t))) (sparql . t))) (add-hook 'org-babel-after-execute-hook 'org-redisplay-inline-images)) @@ -4136,8 +4143,10 @@ With ARG, repeats or can move backward if negative." (completing-read "Dired: " bookmarks nil nil "^") bookmarks))))) +(when my/is-termux + (straight-use-package 'vterm)) + (use-package vterm - ;; :straight t :commands (vterm vterm-other-window) :config (setq vterm-kill-buffer-on-exit t) @@ -4361,7 +4370,7 @@ With ARG, repeats or can move backward if negative." (use-package elfeed :straight (:repo "SqrtMinusOne/elfeed" :host github) - :if (not my/remote-server) + :if (not (or my/is-termux my/remote-server)) :commands (elfeed) :init (my-leader-def "ae" #'elfeed-summary) @@ -4482,6 +4491,7 @@ With ARG, repeats or can move backward if negative." (use-package elfeed-sync :straight (:host github :repo "SqrtMinusOne/elfeed-sync") + :if (not my/remote-server) :after elfeed :config (elfeed-sync-mode) @@ -5016,13 +5026,12 @@ ENTRY is an instance of `elfeed-entry'." (use-package emms :straight t - :if (not my/remote-server) + :if (not (or my/remote-server my/is-termux)) :commands (emms-smart-browse emms-browser emms-add-url emms-add-file emms-add-find) - :if (not my/is-termux) :init (my-leader-def :infix "as" @@ -5332,6 +5341,7 @@ ENTRY is an instance of `elfeed-entry'." (use-package telega :straight t + :if (not (or my/remote-server my/is-termux)) :commands (telega) :init (my-leader-def "a l" (my/command-in-persp "telega" "telega" 3 (telega))) @@ -5541,6 +5551,7 @@ ENTRY is an instance of `elfeed-entry'." (use-package docker :straight t + :if (not (or my/remote-server my/is-termux)) :commands (docker) :init (my-leader-def "ao" 'docker)) @@ -5607,6 +5618,7 @@ ENTRY is an instance of `elfeed-entry'." (use-package guix :straight t + :if (not (or my/remote-server my/is-termux)) :commands (guix) :init (my-leader-def "ag" 'guix) @@ -5616,7 +5628,7 @@ ENTRY is an instance of `elfeed-entry'." "A dummy variable.")) (use-package atomic-chrome - :if (not my/remote-server) + :if (not (or my/remote-server my/is-termux)) :commands (atomic-chrome-start-server) :straight t) diff --git a/Emacs.org b/Emacs.org index 537b915..07c4d33 100644 --- a/Emacs.org +++ b/Emacs.org @@ -1353,6 +1353,9 @@ Disable GUI elements (tool-bar-mode -1) (menu-bar-mode -1) (scroll-bar-mode -1)) + +(when my/is-termux + (menu-bar-mode -1)) #+end_src Transparency. Not setting it now, as I'm using [[file:Desktop.org::*Picom][picom]]. @@ -1441,6 +1444,7 @@ Title format, which looks something like =emacs:project@hostname=. #+begin_src emacs-lisp (use-package olivetti :straight t + :if (display-graphic-p) :config (setq-default olivetti-body-width 86)) #+end_src @@ -1467,7 +1471,6 @@ My colorscheme of choice. #+begin_src emacs-lisp (use-package doom-themes :straight t - :if (not my/is-termux) :config (setq doom-themes-enable-bold t doom-themes-enable-italic t) @@ -2044,7 +2047,7 @@ References: (use-package tree-sitter :straight t - :if (not my/remote-server) + :if (not (or my/remote-server my/is-termux)) :hook ((typescript-mode . my/tree-sitter-if-not-mmm) (js-mode . my/tree-sitter-if-not-mmm) (python-mode . tree-sitter-mode) @@ -2065,6 +2068,7 @@ References: #+begin_src emacs-lisp (use-package dap-mode :straight t + :if (not (or my/remote-server my/is-termux)) :commands (dap-debug) :init (setq lsp-enable-dap-auto-configure nil) @@ -2392,7 +2396,7 @@ A general-purpose package to run formatters on files. While the most popular for (use-package copilot :straight (:host github :repo "SqrtMinusOne/copilot.el" :files ("dist" "*.el")) :commands (copilot-mode) - :if (not my/remote-server) + :if (not (or my/remote-server my/is-termux)) :init (add-hook 'prog-mode-hook #'copilot-mode) :config @@ -3551,7 +3555,7 @@ Use the built-in org mode (=:type built-in=). (unless (file-exists-p org-directory) (mkdir org-directory t)) :config - (setq org-startup-indented t) + (setq org-startup-indented (not my/is-termux)) (setq org-return-follows-link t) (setq org-src-tab-acts-natively nil) (add-hook 'org-mode-hook 'smartparens-mode) @@ -3613,9 +3617,10 @@ This used to have =org-contacts= and =ol-notmuch= at some point, but they have s [[https://git.sr.ht/~tarsius/ol-notmuch][ol-notmuch]] is a package that adds Org links to notmuch messages. #+begin_src emacs-lisp -(use-package ol-notmuch - :straight t - :after (org)) +(unless (or my/remote-server my/is-termux) + (use-package ol-notmuch + :straight t + :after (org notmuch))) #+end_src *** org-tempo =org-tempo= is a convinient package that provides snippets for various org blocks. @@ -3654,7 +3659,7 @@ References: (use-package jupyter :straight t :after (org) - :if (not my/remote-server)) + :if (not (or my/remote-server my/is-termux))) #+end_src Refresh kernelspecs. @@ -3736,7 +3741,7 @@ Enable languages (with-eval-after-load-norem 'org (org-babel-do-load-languages 'org-babel-load-languages - '((emacs-lisp . t) + `((emacs-lisp . t) (python . t) (sql . t) ;; (typescript .t) @@ -3744,7 +3749,7 @@ Enable languages (shell . t) (plantuml . t) (octave . t) - (jupyter . t) + ,@(unless my/is-termux '((jupyter . t))) (sparql . t))) (add-hook 'org-babel-after-execute-hook 'org-redisplay-inline-images)) @@ -5890,11 +5895,16 @@ My terminal emulator of choice. References: - [[https://github.com/akermu/emacs-libvterm][emacs-libvterm repo]] **** Configuration -I use the package from the Guix repository to avoid building libvterm. +On Guix it makes more sense to use the Guix package to avoid building the vterm module, but obviously not an option on termux, hence this: +#+begin_src emacs-lisp +(when my/is-termux + (straight-use-package 'vterm)) +#+end_src + +The actual config: #+begin_src emacs-lisp (use-package vterm - ;; :straight t :commands (vterm vterm-other-window) :config (setq vterm-kill-buffer-on-exit t) @@ -6174,7 +6184,7 @@ Using my own fork until the modifications are merged into master. #+begin_src emacs-lisp (use-package elfeed :straight (:repo "SqrtMinusOne/elfeed" :host github) - :if (not my/remote-server) + :if (not (or my/is-termux my/remote-server)) :commands (elfeed) :init (my-leader-def "ae" #'elfeed-summary) @@ -6321,6 +6331,7 @@ The default interface of elfeed is just a list of all entries, so it gets hard t #+begin_src emacs-lisp (use-package elfeed-sync :straight (:host github :repo "SqrtMinusOne/elfeed-sync") + :if (not my/remote-server) :after elfeed :config (elfeed-sync-mode) @@ -7082,13 +7093,12 @@ References: #+begin_src emacs-lisp :noweb yes (use-package emms :straight t - :if (not my/remote-server) + :if (not (or my/remote-server my/is-termux)) :commands (emms-smart-browse emms-browser emms-add-url emms-add-file emms-add-find) - :if (not my/is-termux) :init (my-leader-def :infix "as" @@ -7549,6 +7559,7 @@ Send =/detach= to all servers. Kinda strange that there's no such function alrea #+begin_src emacs-lisp (use-package telega :straight t + :if (not (or my/remote-server my/is-termux)) :commands (telega) :init (my-leader-def "a l" (my/command-in-persp "telega" "telega" 3 (telega))) @@ -7825,6 +7836,7 @@ A package to manage docker containers from Emacs. #+begin_src emacs-lisp (use-package docker :straight t + :if (not (or my/remote-server my/is-termux)) :commands (docker) :init (my-leader-def "ao" 'docker)) @@ -7917,6 +7929,7 @@ An Emacs package to help managing GNU Guix. #+begin_src emacs-lisp (use-package guix :straight t + :if (not (or my/remote-server my/is-termux)) :commands (guix) :init (my-leader-def "ag" 'guix) @@ -7930,7 +7943,7 @@ An Emacs package to help managing GNU Guix. #+begin_src emacs-lisp (use-package atomic-chrome - :if (not my/remote-server) + :if (not (or my/remote-server my/is-termux)) :commands (atomic-chrome-start-server) :straight t) #+end_src