Making dired better

This commit is contained in:
Chris Cochrun 2021-04-24 05:34:12 -05:00
parent a25ed0c286
commit 91cfedd269
2 changed files with 84 additions and 22 deletions

View file

@ -87,20 +87,20 @@ In order to have this config work on both my desktop with regular joe-schmoe mon
(set-face-attribute 'variable-pitch nil :font "Cantarell" (set-face-attribute 'variable-pitch nil :font "Cantarell"
:height (+ chris/default-font-size (/ chris/default-font-size 8)) :weight 'regular)) :height (+ chris/default-font-size (/ chris/default-font-size 8)) :weight 'regular))
;; (defun chris/set-transparency () (defun chris/set-transparency ()
;; "Set the frame to be transparent on Wayland compositors" "Set the frame to be transparent on Wayland compositors"
;; (if (string= x-display-name "wayland-0") (if (string= x-display-name "wayland-0")
;; ((set-frame-parameter (selected-frame) 'alpha '(90 . 90)) ((set-frame-parameter (selected-frame) 'alpha '(90 . 90))
;; (add-to-list 'default-frame-alist '(alpha . (90 . 90)))))) (add-to-list 'default-frame-alist '(alpha . (90 . 90))))))
(if (daemonp) (if (daemonp)
(add-hook 'after-make-frame-functions (add-hook 'after-make-frame-functions
(lambda (frame) (lambda (frame)
(with-selected-frame frame (with-selected-frame frame
(chris/set-font-faces) (chris/set-font-faces)
(chris/set-transparency)))) (chris/set-transparency)))
(chris/set-font-faces)) (chris/set-font-faces))
;; (chris/set-transparency)) (chris/set-transparency))
#+end_src #+end_src
Then let's make sure line-numbers are relative and on. And let's turn on visual-line-mode globally. Then let's make sure line-numbers are relative and on. And let's turn on visual-line-mode globally.
@ -147,6 +147,12 @@ Finally this is not part of the UI but let's do this early and start the server
#+begin_src emacs-lisp #+begin_src emacs-lisp
(server-start) (server-start)
#+end_src #+end_src
I will also add my personal scripts to emacs' PATH
#+begin_src emacs-lisp
(add-to-list 'exec-path "/home/chris/scripts")
#+end_src
** Let's bootstrap straight.el ** Let's bootstrap straight.el
#+begin_src emacs-lisp #+begin_src emacs-lisp
(setq straight-fix-org t) (setq straight-fix-org t)
@ -587,6 +593,7 @@ These are some evil bindings to avy.
(general-def 'normal (general-def 'normal
"gl" 'avy-goto-line)) "gl" 'avy-goto-line))
#+end_src #+end_src
*** Ace-Link *** Ace-Link
Ace link provides an avy like search for links. Upon using the keybindings presented it opens the url. Ace link provides an avy like search for links. Upon using the keybindings presented it opens the url.
#+begin_src emacs-lisp #+begin_src emacs-lisp
@ -692,8 +699,10 @@ I'm making a small function in here to open files in the appropriate program usi
(defun chris/dired-open-xdg () (defun chris/dired-open-xdg ()
"Open the file-at-point in the appropriate program" "Open the file-at-point in the appropriate program"
(interactive) (interactive)
(let ((file (ignore-errors (dired-get-file-for-visit)))) (let ((file (file-truename (ignore-errors (dired-get-file-for-visit)))))
(browse-url-xdg-open (file-truename file)))) (message file)
(call-process "xdg-open" nil 0 nil file)))
:general :general
(chris/leader-keys (chris/leader-keys
:states 'normal :states 'normal
@ -727,9 +736,23 @@ We need a function to copy the full filename to kill-ring
"l" 'dired-single-buffer)) "l" 'dired-single-buffer))
#+end_src #+end_src
#+begin_src emacs-lisp :tangle no #+begin_src emacs-lisp
(use-package dired-rainbow (use-package dired-rainbow
:after dired) :after dired
:config
(defconst chris/dired-media-files-extensions
'("mp3" "mp4" "MP3" "MP4" "avi" "mpg" "flv" "ogg" "opus")
"Media files.")
(defconst chris/dired-image-files-extensions
'("png" "jpg" "PNG" "JPG" "jpeg" "JPEG" "gif" "GIF")
"image files")
(dired-rainbow-define html "#4e9a06" ("htm" "html" "xhtml"))
(dired-rainbow-define media "#f3f99d" chris/dired-media-files-extensions)
(dired-rainbow-define image "#5af78e" chris/dired-image-files-extensions)
(dired-rainbow-define log (:inherit default :italic t) ".*\\.log"))
#+end_src #+end_src
#+begin_src emacs-lisp #+begin_src emacs-lisp
@ -738,6 +761,14 @@ We need a function to copy the full filename to kill-ring
:config (diredfl-global-mode +1)) :config (diredfl-global-mode +1))
#+end_src #+end_src
#+begin_src emacs-lisp
(use-package dired-rsync
:after dired
:general
(general-def 'normal dired-mode-map
"C" 'dired-rsync))
#+end_src
*** Tramp *** Tramp
#+begin_src emacs-lisp #+begin_src emacs-lisp
(require 'tramp) (require 'tramp)
@ -1509,6 +1540,8 @@ Let's add our own eshell prompt. and set the password cache to a significantly h
(rename-buffer "*eshell-pop*") (rename-buffer "*eshell-pop*")
(display-buffer-in-side-window pop-eshell '((side . bottom)))))) (display-buffer-in-side-window pop-eshell '((side . bottom))))))
(setq eshell-banner-message "")
:general :general
(chris/leader-keys (chris/leader-keys
:states 'normal :states 'normal
@ -1542,7 +1575,7 @@ Let's use pdf-tools for a lot better interaction with pdfs.
(use-package nov (use-package nov
:mode ("\\.epub\\'" . nov-mode) :mode ("\\.epub\\'" . nov-mode)
:config :config
(add-hook 'nov-mode-hook 'olivetti-mode)) (add-hook 'nov-mode-hook 'visual-fill-column-mode))
#+end_src #+end_src
** Window Management ** Window Management

49
init.el
View file

@ -32,20 +32,20 @@
(set-face-attribute 'variable-pitch nil :font "Cantarell" (set-face-attribute 'variable-pitch nil :font "Cantarell"
:height (+ chris/default-font-size (/ chris/default-font-size 8)) :weight 'regular)) :height (+ chris/default-font-size (/ chris/default-font-size 8)) :weight 'regular))
;; (defun chris/set-transparency () (defun chris/set-transparency ()
;; "Set the frame to be transparent on Wayland compositors" "Set the frame to be transparent on Wayland compositors"
;; (if (string= x-display-name "wayland-0") (if (string= x-display-name "wayland-0")
;; ((set-frame-parameter (selected-frame) 'alpha '(90 . 90)) ((set-frame-parameter (selected-frame) 'alpha '(90 . 90))
;; (add-to-list 'default-frame-alist '(alpha . (90 . 90)))))) (add-to-list 'default-frame-alist '(alpha . (90 . 90))))))
(if (daemonp) (if (daemonp)
(add-hook 'after-make-frame-functions (add-hook 'after-make-frame-functions
(lambda (frame) (lambda (frame)
(with-selected-frame frame (with-selected-frame frame
(chris/set-font-faces) (chris/set-font-faces)
(chris/set-transparency)))) (chris/set-transparency)))
(chris/set-font-faces)) (chris/set-font-faces))
;; (chris/set-transparency)) (chris/set-transparency))
(setq display-line-numbers-type 'relative) (setq display-line-numbers-type 'relative)
(global-display-line-numbers-mode +1) (global-display-line-numbers-mode +1)
@ -73,6 +73,8 @@
(server-start) (server-start)
(add-to-list 'exec-path "/home/chris/scripts")
(setq straight-fix-org t) (setq straight-fix-org t)
(setq straight-check-for-modifications '(check-on-save find-when-checking)) (setq straight-check-for-modifications '(check-on-save find-when-checking))
(defvar bootstrap-version) (defvar bootstrap-version)
@ -417,8 +419,10 @@ vertically."
(defun chris/dired-open-xdg () (defun chris/dired-open-xdg ()
"Open the file-at-point in the appropriate program" "Open the file-at-point in the appropriate program"
(interactive) (interactive)
(let ((file (ignore-errors (dired-get-file-for-visit)))) (let ((file (file-truename (ignore-errors (dired-get-file-for-visit)))))
(browse-url-xdg-open (file-truename file)))) (message file)
(call-process "xdg-open" nil 0 nil file)))
:general :general
(chris/leader-keys (chris/leader-keys
:states 'normal :states 'normal
@ -444,10 +448,33 @@ vertically."
"h" 'dired-single-up-directory "h" 'dired-single-up-directory
"l" 'dired-single-buffer)) "l" 'dired-single-buffer))
(use-package dired-rainbow
:after dired
:config
(defconst chris/dired-media-files-extensions
'("mp3" "mp4" "MP3" "MP4" "avi" "mpg" "flv" "ogg" "opus")
"Media files.")
(defconst chris/dired-image-files-extensions
'("png" "jpg" "PNG" "JPG" "jpeg" "JPEG" "gif" "GIF")
"image files")
(dired-rainbow-define html "#4e9a06" ("htm" "html" "xhtml"))
(dired-rainbow-define media "#f3f99d" chris/dired-media-files-extensions)
(dired-rainbow-define image "#5af78e" chris/dired-image-files-extensions)
(dired-rainbow-define log (:inherit default :italic t) ".*\\.log"))
(use-package diredfl (use-package diredfl
:after dired :after dired
:config (diredfl-global-mode +1)) :config (diredfl-global-mode +1))
(use-package dired-rsync
:after dired
:general
(general-def 'normal dired-mode-map
"C" 'dired-rsync))
(require 'tramp) (require 'tramp)
(add-to-list 'tramp-default-proxies-alist (add-to-list 'tramp-default-proxies-alist
'(nil "\\`root\\'" "/ssh:%h:")) '(nil "\\`root\\'" "/ssh:%h:"))
@ -1145,6 +1172,8 @@ If on a:
(rename-buffer "*eshell-pop*") (rename-buffer "*eshell-pop*")
(display-buffer-in-side-window pop-eshell '((side . bottom)))))) (display-buffer-in-side-window pop-eshell '((side . bottom))))))
(setq eshell-banner-message "")
:general :general
(chris/leader-keys (chris/leader-keys
:states 'normal :states 'normal
@ -1167,7 +1196,7 @@ If on a:
(use-package nov (use-package nov
:mode ("\\.epub\\'" . nov-mode) :mode ("\\.epub\\'" . nov-mode)
:config :config
(add-hook 'nov-mode-hook 'olivetti-mode)) (add-hook 'nov-mode-hook 'visual-fill-column-mode))
(setq display-buffer-alist (setq display-buffer-alist
'(("\\*e?shell\\*" '(("\\*e?shell\\*"