dired config

This commit is contained in:
janis 2026-07-28 00:00:51 +02:00
parent a476ecd820
commit b8cdd17444
Signed by: janis
SSH key fingerprint: SHA256:bB1qbbqmDXZNT0KKD5c2Dfjg53JGhj7B3CFcLIzSqq8

164
init.org
View file

@ -491,13 +491,15 @@ Honestly not very happy with this at the moment, but it's kind of hacked togethe
:prefix-command 'nemo/leader-prefix-command :prefix-command 'nemo/leader-prefix-command
:global-prefix nemo/leader-global :global-prefix nemo/leader-global
:prefix nemo/leader-evil) :prefix nemo/leader-evil)
;; `leader-def` binds with prefix "SPC" into `nemo/leader-prefix-map`
(general-create-definer leader-def (general-create-definer leader-def
:prefix-command 'nemo/leader-prefix-command :prefix-command 'nemo/leader-prefix-command
:prefix-map 'nemo/leader-prefix-map) :prefix-map 'nemo/leader-prefix-map)
(general-create-definer leader-other-def (general-create-definer leader-other-def
:states '(emacs normal) :states '(emacs normal)
:prefix-map 'nemo/leader-prefix-map :prefix-command 'nemo/leader-prefix-command
:prefix-command 'nemo/leader-prefix-command :prefix-map 'nemo/leader-prefix-map
:global-prefix nemo/leader-global :global-prefix nemo/leader-global
:prefix nemo/leader-evil :prefix nemo/leader-evil
) )
@ -533,6 +535,164 @@ Honestly not very happy with this at the moment, but it's kind of hacked togethe
) )
) )
#+end_src #+end_src
** =dired=
Inspiration taken from [[https://eugene-andrienko.com/2026-07-05-my-emacs-configuration-dired.html][this post]] from hacker news.
Todo: figure out how best to use =image-dired=.
#+begin_src emacs-lisp :tangle local-lisp/dired-hide-dotfiles.el
;;; dired-hide-dotfiles.el --- Hide dotfiles in dired buffers -*- lexical-binding: t; -*-
(require 'dired)
(defgroup dired-hide-dotfiles nil
:group 'dired)
(define-minor-mode dired-hide-dotfiles-mode
:init-value nil
:group 'dired
(if dired-hide-dotfiles-mode
(progn
(add-hook 'dired-after-readin-hook #'dired-hide-dotfiles)
(dired-hide-dotfiles))
(remove-hook 'dired-after-readin-hook #'dired-hide-dotfiles)
(revert-buffer))
(defun dired-hide-dotfiles ()
"Hide dotfiles in dired buffer."
(let ((inhibit-message t))
(dired-mark-files-regexp "^\\.|^.*/\\.")
(dired-do-kill-lines nil "Hid %d dotfiles."))))
(provide 'dired-hide-dotfiles)
#+end_src
#+begin_src emacs-lisp
(defun nemo/dired-create-file-or-directory (path)
"Create a file or directory with NAME in the current dired buffer."
(interactive "sEnter name for new file/directory: ")
(if (or (file-exists-p path) (file-directory-p path))
(message "'%s' already exists." path)
(if (string-suffix-p "/" path)
(dired-create-directory path)
(dired-create-empty-file path))))
(defun nemo/dired-toggle-mark ()
"Toggle the mark on the current file in dired."
(interactive)
(when dired-get-filename nil t)
(let ((inhibit-read-only t))
(save-excursion
(dired-move-to-filename)
(beginning-of-line)
(if (looking-at dired-marker-char)
(dired-unmark 1)
(dired-mark 1)))))
(use-package dired
:straight nil
:hook (dired-mode . hl-line-mode)
:hook (dired-mode . dired-hide-details-mode)
:hook (dired-mode . auto-revert-mode)
:hook (dired-mode . dired-omit-mode)
:bind (:map dired-mode-map
("<backspace>" . dired-up-directory)
("<tab>" . dired-subtree-toggle)
("TAB" . dired-subtree-toggle)
("C-TAB" . dired-subtree-remove))
:config
(leader-def
"p" 'dired-preview-mode)
(setopt dired-compress-directory-default-suffix ".tar.zst"
dired-create-destination-dirs 'always
dired-filename-display-length 'window
dired-hide-details-hide-symlink-targets nil
dired-kill-when-opening-new-dired-buffer t
dired-listing-switches "-alh --group-directories-first"
dired-mouse-drag-files t
dired-movement-style 'bounded
dired-recursive-copies 'always
dired-recursive-deletes 'top)
:custom
(dired-omit-files (rx (seq bol ".")))
)
(use-package dired-subtree
:straight t
:after dired
:hook (dired-subtree-after-insert . (lambda ()
(if
(bound-and-true-p dired-omit-mode)
(dired-omit-expunge))))
:config
(general-def '(emacs normal) 'dired-mode-map
"#" 'dired-omit-mode
"+" 'nemo/dired-create-file-or-directory)
)
(use-package dired-open
:straight t
:after dired
:config
(setopt dired-open-extensions '(("png" . "sxiv")
("jpg" . "sxiv")
("jpeg" . "sxiv")
("pdf" . "zathura")
("mp4" . "mpv")
("mkv" . "mpv")
("webm" . "mpv")
("epub" . "zathura")
("mp3" . "mpv")
("wav" . "mpv"))))
(use-package image-dired
:straight t
:after dired
:config
(setopt image-dired-thumb-margin 5
image-dired-thumb-size 256
image-dired-track-movement t
image-dired-thumbnail-storage 'standard-large))
(defun nemo/dired-preview--file-ignored-p (orig-fun file &rest args)
"Return t if FILE should be ignored by dired-preview."
(if-let* (((stringp dired-preview-ignored-extensions-regexp))
((not (file-directory-p file)))
(file-nondir (file-name-nondirectory file)))
(string-match-p dired-preview-ignored-extensions-regexp file-nondir)
t))
(use-package dired-preview
:straight t
:after dired
:config
(setopt
dired-preview-display-action-alist #'dired-preview-display-action-alist-dwim
dired-preview-delay 0.1
dired-preview-ignored-extensions-regexp
(concat
(default-value 'dired-preview-ignored-extensions-regexp)))
(advice-add 'dired-preview--file-ignored-p :around
#'nemo/dired-preview--file-ignored-p)
(cl-defmethod dired-preview--get-buffer ((file (head ignore)))
(let* ((file (s-chop-suffix "/" (cdr file)))
(buffer-name (format "%s (no preview)" (file-name-nondirectory file))))
(or (get-buffer buffer-name)
(with-current-buffer (get-buffer-create buffer-name)
(set-visited-file-name file t)
(rename-buffer buffer-name)
(set-buffer-modified-p nil)
(setq-local dired-preview--placeholder-buffer-p t)
(setq buffer-read-only t)
(current-buffer)))))
)
#+end_src
** Web Search ** Web Search
#+begin_src emacs-lisp #+begin_src emacs-lisp
(use-package engine-mode (use-package engine-mode