Remove redundant dired sort hook #1414

This still means dired will be unsorted for BSD ls users, but that's
acceptable (for now).
This commit is contained in:
Henrik Lissner 2019-05-14 18:45:38 -04:00
parent 3d53aa5dad
commit 75777756e1
No known key found for this signature in database
GPG key ID: 5F6C0EA160557395
3 changed files with 15 additions and 20 deletions

View file

@ -262,6 +262,14 @@ original value of `symbol-file'."
(doom|run-local-var-hooks))) (doom|run-local-var-hooks)))
(add-hook 'after-change-major-mode-hook #'doom|run-local-var-hooks-if-necessary) (add-hook 'after-change-major-mode-hook #'doom|run-local-var-hooks-if-necessary)
(defun doom|create-non-existent-directories ()
"Automatically create missing directories when creating new files."
(let ((parent-directory (file-name-directory buffer-file-name)))
(when (and (not (file-exists-p parent-directory))
(y-or-n-p (format "Directory `%s' does not exist! Create it?" parent-directory)))
(make-directory parent-directory t))))
(add-hook 'find-file-not-found-functions #'doom|create-non-existent-directories)
;; ;;
;;; Garbage collector optimizations ;;; Garbage collector optimizations

View file

@ -24,27 +24,10 @@
;; when not using GNU ls. ;; when not using GNU ls.
(if-let* ((gls (executable-find "gls"))) (if-let* ((gls (executable-find "gls")))
(setq insert-directory-program gls) (setq insert-directory-program gls)
(setq args (delete "--group-directories-first" args)) ;; BSD ls doesn't support --group-directories-first
(message "Cannot find `gls` (GNU ls). Install coreutils via your system package manager"))) (setq args (delete "--group-directories-first" args))))
(setq dired-listing-switches (string-join args " "))) (setq dired-listing-switches (string-join args " ")))
(defun +dired|sort-directories-first ()
"List directories first in dired buffers."
(save-excursion
(let (buffer-read-only)
(forward-line 2) ;; beyond dir. header
(sort-regexp-fields t "^.*$" "[ ]*." (point) (point-max))))
(set-buffer-modified-p nil))
(add-hook 'dired-after-readin-hook #'+dired|sort-directories-first)
;; Automatically create missing directories when creating new files
(defun +dired|create-non-existent-directory ()
(let ((parent-directory (file-name-directory buffer-file-name)))
(when (and (not (file-exists-p parent-directory))
(y-or-n-p (format "Directory `%s' does not exist! Create it?" parent-directory)))
(make-directory parent-directory t))))
(add-to-list 'find-file-not-found-functions '+dired|create-non-existent-directory nil #'eq)
;; Kill buffer when quitting dired buffers ;; Kill buffer when quitting dired buffers
(define-key dired-mode-map [remap quit-window] (λ! (quit-window t)))) (define-key dired-mode-map [remap quit-window] (λ! (quit-window t))))
@ -103,7 +86,7 @@
;; ;;
;; Evil integration ;;; Evil integration
(map! :when (featurep! :editor evil +everywhere) (map! :when (featurep! :editor evil +everywhere)
:after dired :after dired

View file

@ -0,0 +1,4 @@
;;; emacs/dired/doctor.el -*- lexical-binding: t; -*-
(when (and IS-BSD (not (executable-find "gls")))
(warn! "Cannot find gls (GNU ls). This may cause issues with dired"))