Merge branch 'master' of github.com:SqrtMinusOne/dotfiles

This commit is contained in:
Pavel Korytov 2023-09-19 12:32:31 +03:00
commit 0c33c96e9e
5 changed files with 132 additions and 46 deletions

View file

@ -1,6 +1,11 @@
# [[file:../../Console.org::*Fish][Fish:1]]
if [ "$TERM" != "dumb" ]; and type -q starship
if [ "$TERM" != "dumb" ]; and type -q starship;
starship init fish | source
else
function fish_prompt -d "Write out the prompt"
printf '%s@%s %s%s%s > ' $USER $hostname \
(set_color $fish_color_cwd) (basename (pwd)) (set_color normal)
end
end
# Fish:1 ends here

View file

@ -91,7 +91,8 @@
(setq custom-file (concat user-emacs-directory "custom.el"))
(load custom-file 'noerror)
(setq auth-source-debug nil)
(setq auth-source-debug t)
(setq auth-sources '("~/.authinfo"))
(let ((private-file (expand-file-name "private.el" user-emacs-directory)))
(when (file-exists-p private-file)
@ -156,10 +157,12 @@
:config
(evil-mode 1)
;; (setq evil-respect-visual-line-mode t)
(evil-set-undo-system 'undo-tree)
(general-define-key
:states '(motion)
"ze" nil))
(when (fboundp #'undo-tree-undo)
(evil-set-undo-system 'undo-tree))
(when (fboundp #'general-define-key)
(general-define-key
:states '(motion)
"ze" nil)))
(use-package evil-surround
:straight t
@ -571,9 +574,7 @@ then it takes a second \\[keyboard-quit] to abort the minibuffer."
:straight t
:config
(projectile-mode +1)
(setq projectile-project-search-path '("~/Code" "~/Documents"))
(defadvice projectile-project-root (around ignore-remote first activate)
(unless (file-remote-p default-directory) ad-do-it)))
(setq projectile-project-search-path '("~/Code" "~/Documents")))
(use-package counsel-projectile
:after (counsel projectile)
@ -3281,7 +3282,8 @@ Returns (<buffer> . <workspace-index>) or nil."
"{" #'org-habit-stats-scroll-graph-left-big
"}" #'org-habit-stats-scroll-graph-right-big
"." #'org-habit-stats-view-next-habit
"," #'org-habit-stats-view-previous-habit))
"," #'org-habit-stats-view-previous-habit)
(add-hook 'org-after-todo-state-change-hook 'org-habit-stats-update-properties))
(defun my/org-match-at-point-p (match)
"Return non-nil if headline at point matches MATCH.
@ -4457,11 +4459,7 @@ With ARG, repeats or can move backward if negative."
:hook (dired-mode . (lambda ()
(unless (string-match-p "/gnu/store" default-directory)
(all-the-icons-dired-mode))))
:config
;; (advice-add 'dired-add-entry :around #'all-the-icons-dired--propertize)
;; (advice-add 'dired-remove-entry :around #'all-the-icons-dired--propertize)
;; (advice-add 'dired-kill-subdir :around #'all-the-icons-dired--propertize)
)
:config)
(use-package dired-open
:straight t
@ -4521,7 +4519,37 @@ With ARG, repeats or can move backward if negative."
"sQ" 'my/dired-kill-all-subdirs
(kbd "TAB") 'dired-hide-subdir))
(setq tramp-verbose 1)
(setq tramp-verbose 6)
(defun my/tramp-p (&optional buffer)
(file-remote-p
(buffer-local-value 'default-directory (or buffer (current-buffer)))))
(defun my/tramp-void-if-tramp (fun &rest args)
(unless (my/tramp-p)
(apply fun args)))
(defun my/tramp-void-if-file-is-tramp (fun &optional dir)
(unless (file-remote-p (or dir default-directory))
(funcall fun dir)))
(with-eval-after-load 'editorconfig
(advice-add #'editorconfig-apply :around #'my/tramp-void-if-tramp)
(advice-add #'editorconfig--disabled-for-filename
:around #'my/tramp-void-if-file-is-tramp))
(with-eval-after-load 'all-the-icons-dired
(advice-add #'all-the-icons-dired-mode :around #'my/tramp-void-if-tramp))
(with-eval-after-load 'projectile
(advice-add #'projectile-project-root :around #'my/tramp-void-if-file-is-tramp))
(with-eval-after-load 'lsp
(advice-add #'lsp :around #'my/tramp-void-if-tramp)
(advice-add #'lsp-deferred :around #'my/tramp-void-if-tramp))
(with-eval-after-load 'git-gutter
(advice-add #'git-gutter--turn-on :around #'my/tramp-void-if-tramp))
(setq remote-file-name-inhibit-cache nil)
(setq vc-ignore-dir-regexp
@ -6562,7 +6590,7 @@ base toot."
"t" 'google-translate-smooth-translate)
(use-package biome
:straight (:host github :repo "SqrtMinusOne/biome")
:straight t
:commands (biome)
:init
(my-leader-def "ab" #'biome)

View file

@ -63,6 +63,10 @@ export GUIX_PACKAGE_PATH=~/guix-packages
export GUIX_LOCPATH=$HOME/.guix-extra-profiles/console/console/lib/locale
# Guix settings:4 ends here
# [[file:Console.org::*Guix settings][Guix settings:5]]
export GIO_EXTRA_MODULES=""
# Guix settings:5 ends here
# [[file:Console.org::*Other package managers][Other package managers:1]]
if [ -d "$HOME/.cask" ]; then
export PATH="/home/pavel/.cask/bin:$PATH"

View file

@ -119,6 +119,11 @@ Locale settings
#+begin_src sh
export GUIX_LOCPATH=$HOME/.guix-extra-profiles/console/console/lib/locale
#+end_src
Somehow LibreOffice doesn't work without the following:
#+begin_src sh
export GIO_EXTRA_MODULES=""
#+end_src
** Other package managers
Using other package managers with Guix requires some extra work.
@ -478,8 +483,13 @@ init_yc () {
Launch starship
#+begin_src fish
if [ "$TERM" != "dumb" ]; and type -q starship
if [ "$TERM" != "dumb" ]; and type -q starship;
starship init fish | source
else
function fish_prompt -d "Write out the prompt"
printf '%s@%s %s%s%s > ' $USER $hostname \
(set_color $fish_color_cwd) (basename (pwd)) (set_color normal)
end
end
#+end_src

View file

@ -246,8 +246,10 @@ By default, =custom= writes stuff to =init.el=, which is somewhat annoying. The
(load custom-file 'noerror)
#+end_src
*** authinfo
Use only the gpg-encrypted version of the file.
#+begin_src emacs-lisp
(setq auth-source-debug nil)
(setq auth-source-debug t)
(setq auth-sources '("~/.authinfo"))
#+end_src
*** Private config
I have some variables which I don't commit to the repo, e.g. my current location. They are stored in =private.el=
@ -358,10 +360,12 @@ Basic evil configuration.
:config
(evil-mode 1)
;; (setq evil-respect-visual-line-mode t)
(evil-set-undo-system 'undo-tree)
(general-define-key
:states '(motion)
"ze" nil))
(when (fboundp #'undo-tree-undo)
(evil-set-undo-system 'undo-tree))
(when (fboundp #'general-define-key)
(general-define-key
:states '(motion)
"ze" nil)))
#+end_src
**** Addons
[[https://github.com/emacs-evil/evil-surround][evil-surround]] emulates one of my favorite vim plugins, surround.vim. Adds a lot of parentheses management options.
@ -1002,9 +1006,7 @@ I used to have [[https://github.com/Alexander-Miller/treemacs][Treemacs]] here,
:straight t
:config
(projectile-mode +1)
(setq projectile-project-search-path '("~/Code" "~/Documents"))
(defadvice projectile-project-root (around ignore-remote first activate)
(unless (file-remote-p default-directory) ad-do-it)))
(setq projectile-project-search-path '("~/Code" "~/Documents")))
(use-package counsel-projectile
:after (counsel projectile)
@ -4594,7 +4596,8 @@ References:
"{" #'org-habit-stats-scroll-graph-left-big
"}" #'org-habit-stats-scroll-graph-right-big
"." #'org-habit-stats-view-next-habit
"," #'org-habit-stats-view-previous-habit))
"," #'org-habit-stats-view-previous-habit)
(add-hook 'org-after-todo-state-change-hook 'org-habit-stats-update-properties))
#+end_src
**** Custom agendas
Some custom agendas to fit my workflow.
@ -6304,11 +6307,7 @@ Display icons for files.
:hook (dired-mode . (lambda ()
(unless (string-match-p "/gnu/store" default-directory)
(all-the-icons-dired-mode))))
:config
;; (advice-add 'dired-add-entry :around #'all-the-icons-dired--propertize)
;; (advice-add 'dired-remove-entry :around #'all-the-icons-dired--propertize)
;; (advice-add 'dired-kill-subdir :around #'all-the-icons-dired--propertize)
)
:config)
#+end_src
Provides stuff like =dired-open-xdg=
@ -6392,25 +6391,65 @@ I add my own keybindings and some extra functionality.
*** TRAMP
TRAMP is a package that provides remote editing capacities. It is particularly useful for remote server management.
One of the reasons why TRAMP may be slow is that some plugins do too many requests to the filesystem. To debug these issues, set the following variable to 6:
Unfortunately, many Emacs packages don't exactly moderate their rate of filesystem operations, and on TRAMP over network each operation adds additional overhead, so... it can get pretty slow. To debug these issues, set the following variable to 6:
#+begin_src emacs-lisp
(setq tramp-verbose 1)
(setq tramp-verbose 6)
#+end_src
To check if a file is remote, you can use ~file-remote-p~. E.g. ~(file-remote-p default-directory)~ for a current buffer. The problem with this approach is that it's rather awkward to add these checks in every hook, especially for global modes, so for now, I just set an environment variable for Emacs which disables these modes.
I used to launch a separate Emacs instance for TRAMP, which had some of these packages disabled via environment variables, my [[https://www.gnu.org/software/emacs/manual/html_node/elisp/Advising-Functions.html][advice]]-fu got better since then.
So far I have found the following problematic plugins:
| Plugin | Note | Solution |
|---------------------+------------------------------------------+-------------------------------|
| editorconfig | looks for .editorconfig in the file tree | do not enable globally |
| all-the-icons-dired | runs test on every file in the directory | disable |
| projectile | looks for .git, .svn, etc | advice ~projectile-file-name~ |
| lsp | does a whole lot of stuff | disable |
| git-gutter | runs git | disable |
| vterm | no proper TRAMP integration | use eshell or shell |
So, to determine if the buffer is in TRAMP:
#+begin_src emacs-lisp
(defun my/tramp-p (&optional buffer)
(file-remote-p
(buffer-local-value 'default-directory (or buffer (current-buffer)))))
#+end_src
And advice to disable a function for TRAMP-related buffers:
#+begin_src emacs-lisp
(defun my/tramp-void-if-tramp (fun &rest args)
(unless (my/tramp-p)
(apply fun args)))
(defun my/tramp-void-if-file-is-tramp (fun &optional dir)
(unless (file-remote-p (or dir default-directory))
(funcall fun dir)))
#+end_src
=editorconfig= lovely package looks for the =.editorconfig= file in the file tree.
#+begin_src emacs-lisp
(with-eval-after-load 'editorconfig
(advice-add #'editorconfig-apply :around #'my/tramp-void-if-tramp)
(advice-add #'editorconfig--disabled-for-filename
:around #'my/tramp-void-if-file-is-tramp))
#+end_src
=all-the-icons-dired= runs =test= on every file in the directory.
#+begin_src emacs-lisp
(with-eval-after-load 'all-the-icons-dired
(advice-add #'all-the-icons-dired-mode :around #'my/tramp-void-if-tramp))
#+end_src
=projectile= looks for =.git=, =.svn=, etc. to find the project root. Maybe I'll make a more economic implementation if I need one.
#+begin_src emacs-lisp
(with-eval-after-load 'projectile
(advice-add #'projectile-project-root :around #'my/tramp-void-if-file-is-tramp))
#+end_src
=lsp= does a whole lot of stuff. It probably can be used with TRAMP on faster connections, but not in my case.
#+begin_src emacs-lisp
(with-eval-after-load 'lsp
(advice-add #'lsp :around #'my/tramp-void-if-tramp)
(advice-add #'lsp-deferred :around #'my/tramp-void-if-tramp))
#+end_src
=git-gutter= runs =git= a lot of times.
#+begin_src emacs-lisp
(with-eval-after-load 'git-gutter
(advice-add #'git-gutter--turn-on :around #'my/tramp-void-if-tramp))
#+end_src
At any rate, it's usable, although not perfect.
Some other optimization settings:
#+begin_src emacs-lisp
(setq remote-file-name-inhibit-cache nil)
@ -9099,7 +9138,7 @@ References:
#+begin_src emacs-lisp
(use-package biome
:straight (:host github :repo "SqrtMinusOne/biome")
:straight t
:commands (biome)
:init
(my-leader-def "ab" #'biome)