[literate] move file management config to init.org

This commit is contained in:
contrapunctus 2021-03-11 06:14:13 +05:30
parent b76049d21c
commit 2b2bf26a2f
2 changed files with 201 additions and 200 deletions

View File

@ -1,198 +0,0 @@
;; -*- lexical-bindiing: t; -*-
;; TODO - function which deletes buffers (esp. files and dired buffers) above a certain size. Then, set that to a timer.
;;;; File management
(use-package dired
:init (add-hook 'dired-mode-hook 'turn-on-launch-mode)
:config
(setq dired-listing-switches
;; by date
;; "-cgGhlt --group-directories-first --time-style=long-iso"
;; by name
"-Achl --group-directories-first --time-style=long-iso"
;; no -h
;; "-cgGl --group-directories-first --time-style=long-iso"
;; by date, no --group-directories-first
;; "-cgGhlt --time-style=long-iso"
)
:bind
(:map dired-mode-map
("W" . wdired-change-to-wdired-mode)
("e" . #'cp/dired-do-ediff)
;; after learning that this copies whole paths with null
;; argument, this became a whole lot more useful
("C-w" . dired-copy-filename-as-kill)
("C-c C-f" . cp/corresponding-text-file)
("h" . dired-hide-dotfiles-mode)
("H" . dired-omit-mode)
([mouse-2] . cp/dired-launch-or-open)
("C-j" . launch-files-dired)
("j" . launch-files-dired)
("M-s r" . dired-do-query-replace-regexp)
("M-s s" . dired-do-isearch-regexp)
("P" . emms-play-dired)
("X" . dired-do-flagged-delete)
("M-n" . dired-next-marked-file)
("M-p" . dired-prev-marked-file)
("I" . sxiv))
:hook
(dired-mode . (lambda () (dired-hide-details-mode t))))
(use-package dired-async
:init (dired-async-mode 1))
(use-package dired-x
:commands dired-jump
:bind
("C-x C-d" . dired-jump))
;; TODO - make launch-file suggest the path at point by default
(use-package launch
:commands turn-on-launch-mode launch-files-dired
:bind ("s-l" . launch-file))
(defun cp/open-random-file (&optional find-args dir cmd)
"Open a random file in DIR, prompting the user for it if not supplied."
(interactive)
(let* ((find-args (if find-args find-args " -type f "))
(dir (if dir dir
(read-directory-name "Directory: "
(if file-name-history
(car file-name-history)
default-directory)
nil t)))
(file-name (--> (expand-file-name dir)
(concat "find " "\"" it "\" "
find-args " | shuf | sed 1q")
(shell-command-to-string it)
(replace-regexp-in-string "\n" "" it))))
(if cmd
(async-shell-command (concat cmd " \"" file-name "\""))
(find-file file-name))))
;; (with-eval-after-load 'project-explorer
;; (global-set-key (kbd "<f5> e") 'project-explorer-toggle))
(use-package dired-hide-dotfiles
:hook (dired-mode . (lambda () (dired-hide-dotfiles-mode))))
;; (require 'sudo-edit)
(defun cp/dired-do-ediff (&optional format)
"Ediff (first two or three) marked files."
(interactive)
(let* ((files (dired-get-marked-files t))
(file-1 (car files))
(files-dir default-directory))
;; 2018-04-08T11:31:20+0530 TODO - if there is only one marked
;; file, check the other window for a marked file and ediff with
;; that.
(cl-case (length files)
(1 (progn
(other-window 1)
(let ((files2 (dired-get-marked-files t))
(files2-dir default-directory))
(if files2
(ediff (expand-file-name
(concat files-dir (car files)))
(expand-file-name
(concat files2-dir (car files2))))))))
(2 (ediff file-1 (cadr files)))
(t (ediff3 file-1 (cadr files) (elt files 2))))))
(defun cp/change-all-units ()
"for fdupes output"
(interactive)
(while (re-search-forward "^[0-9]+" nil t)
(shell-command-on-region (point-at-bol) (point) "numfmt --to=iec-i --suffix=B" nil t)
(forward-word)
(delete-region (point) (progn (forward-word) (point)))))
(defun cp/launch-file-archive ()
(interactive)
(launch-file
(concat
default-directory
(aref (archive-get-descr) 0))))
;; (define-key archive-mode-map (kbd "j") 'cp/launch-file-archive)
;; 2018-02-28T21:00:57+0530
(defun cp/corresponding-text-file ()
(interactive)
(save-excursion
(end-of-line)
(if (derived-mode-p 'dired-mode)
;; 2018-08-05T02:01:26+0530 - support directories too
(let* ((file-or-dir (dired-file-name-at-point))
(file (if (file-directory-p file-or-dir)
(replace-regexp-in-string "/$" "" file-or-dir)
file-or-dir)))
(find-file (concat file ".txt"))))))
;; 2018-07-09T23:22:17+0530
;; a little buggy wrt clicks
(defun cp/dired-launch-or-open (event)
(interactive "e")
;; if point is on a folder, open it with dired
;; otherwise, call launch-files-dired
(if (directory-name-p (dired-file-name-at-point))
(dired-find-file)
(launch-files-dired nil (dired-get-marked-files))))
(defun contrapunctus-delete-file-at-point (&optional prefix)
(interactive "P")
(let ((file (buffer-substring (point-at-bol) (point-at-eol))))
(if (file-exists-p file)
(progn
(delete-file file)
(if prefix
;; delete current line
(delete-region (point-at-bol)
(1+ (point-at-eol)))
;; delete current paragraph
(mark-paragraph)
(delete-active-region)
(forward-line 2))
(message "Deleted %s" file))
(error "File %s does not exist!" file))))
(defun contrapunctus-file-at-point-exists-p ()
(interactive)
(let ((file (buffer-substring (point-at-bol)
(point-at-eol))))
(if (and (not (string-empty-p file))
(file-exists-p file))
(message "%s" t)
(error "File %S does not exist!" file))))
(use-package sxiv
:load-path "~/.emacs.d/contrapunctus/sxiv/"
:bind ("<f2> s" . sxiv)
(:map dired-mode-map
("I" . sxiv)))
(use-package contrasync
:load-path "~/.emacs.d/contrapunctus/contrasync/"
:config
(setq contrasync-disk-path "/media/anon/kash-sg-2tb/"
contrasync-source-paths
`("~/.emacs.d/"
"~/1-music-notation/"
"~/Documents/"
"~/.config/"
"~/.local/"
("~/phone/Nokia 6.1/" ,contrasync-disk-path "phone/Nokia 6.1/"))))
(use-package peep-dired
:disabled
;; ;; didn't work too well 🤔
;; :config
;; (setq peep-dired-cleanup-eagerly t)
:hook
(dired-mode . peep-dired))
(provide 'cp-fm)

203
init.org
View File

@ -751,7 +751,11 @@ Ask for confirmation before saving cookies. I'd rather just disallow them all th
*** sxiv
#+BEGIN_SRC emacs-lisp
(use-package sxiv
:config (setq sxiv-exclude-strings '("meh" "\\.NEF$")))
:load-path "~/.emacs.d/contrapunctus/sxiv/"
:config (setq sxiv-exclude-strings '("meh" "\\.NEF$"))
:bind ("<f2> s" . sxiv)
(:map dired-mode-map
("I" . sxiv)))
#+END_SRC
**
@ -765,7 +769,6 @@ Ask for confirmation before saving cookies. I'd rather just disallow them all th
#+BEGIN_SRC emacs-lisp
(require 'cp-editing)
;; (load "cp-evil")
(require 'cp-fm)
(require 'cp-lily)
(require 'cp-sfz)
(require 'cp-lisp)
@ -785,6 +788,202 @@ PR ideas
(setq emacsshot-with-timestamp t
emacsshot-snap-window-filename "~/Pictures/screenshots/emacsshot/emacsshot.png"))
#+END_SRC
*** File management
#+BEGIN_SRC emacs-lisp
(use-package dired
:init (add-hook 'dired-mode-hook 'turn-on-launch-mode)
:config
(setq dired-listing-switches
;; by date
;; "-cgGhlt --group-directories-first --time-style=long-iso"
;; by name
"-Achl --group-directories-first --time-style=long-iso"
;; no -h
;; "-cgGl --group-directories-first --time-style=long-iso"
;; by date, no --group-directories-first
;; "-cgGhlt --time-style=long-iso"
)
:bind
(:map dired-mode-map
("W" . wdired-change-to-wdired-mode)
("e" . #'cp/dired-do-ediff)
;; after learning that this copies whole paths with null
;; argument, this became a whole lot more useful
("C-w" . dired-copy-filename-as-kill)
("C-c C-f" . cp/corresponding-text-file)
("h" . dired-hide-dotfiles-mode)
("H" . dired-omit-mode)
([mouse-2] . cp/dired-launch-or-open)
("C-j" . launch-files-dired)
("j" . launch-files-dired)
("M-s r" . dired-do-query-replace-regexp)
("M-s s" . dired-do-isearch-regexp)
("P" . emms-play-dired)
("X" . dired-do-flagged-delete)
("M-n" . dired-next-marked-file)
("M-p" . dired-prev-marked-file)
("I" . sxiv))
:hook
(dired-mode . (lambda () (dired-hide-details-mode t))))
(use-package dired-async
:init (dired-async-mode 1))
(use-package dired-x
:commands dired-jump
:bind
("C-x C-d" . dired-jump))
#+END_SRC
#+BEGIN_SRC emacs-lisp
;; TODO - make launch-file suggest the path at point by default
(use-package launch
:commands turn-on-launch-mode launch-files-dired
:bind ("s-l" . launch-file))
#+END_SRC
#+BEGIN_SRC emacs-lisp
(defun cp/open-random-file (&optional find-args dir cmd)
"Open a random file in DIR, prompting the user for it if not supplied."
(interactive)
(let* ((find-args (if find-args find-args " -type f "))
(dir (if dir dir
(read-directory-name "Directory: "
(if file-name-history
(car file-name-history)
default-directory)
nil t)))
(file-name (--> (expand-file-name dir)
(concat "find " "\"" it "\" "
find-args " | shuf | sed 1q")
(shell-command-to-string it)
(replace-regexp-in-string "\n" "" it))))
(if cmd
(async-shell-command (concat cmd " \"" file-name "\""))
(find-file file-name))))
#+END_SRC
#+BEGIN_SRC emacs-lisp
;; (with-eval-after-load 'project-explorer
;; (global-set-key (kbd "<f5> e") 'project-explorer-toggle))
(use-package dired-hide-dotfiles
:hook (dired-mode . (lambda () (dired-hide-dotfiles-mode))))
;; (require 'sudo-edit)
(defun cp/dired-do-ediff (&optional format)
"Ediff (first two or three) marked files."
(interactive)
(let* ((files (dired-get-marked-files t))
(file-1 (car files))
(files-dir default-directory))
;; 2018-04-08T11:31:20+0530 TODO - if there is only one marked
;; file, check the other window for a marked file and ediff with
;; that.
(cl-case (length files)
(1 (progn
(other-window 1)
(let ((files2 (dired-get-marked-files t))
(files2-dir default-directory))
(if files2
(ediff (expand-file-name
(concat files-dir (car files)))
(expand-file-name
(concat files2-dir (car files2))))))))
(2 (ediff file-1 (cadr files)))
(t (ediff3 file-1 (cadr files) (elt files 2))))))
(defun cp/change-all-units ()
"for fdupes output"
(interactive)
(while (re-search-forward "^[0-9]+" nil t)
(shell-command-on-region (point-at-bol) (point) "numfmt --to=iec-i --suffix=B" nil t)
(forward-word)
(delete-region (point) (progn (forward-word) (point)))))
(defun cp/launch-file-archive ()
(interactive)
(launch-file
(concat
default-directory
(aref (archive-get-descr) 0))))
;; (define-key archive-mode-map (kbd "j") 'cp/launch-file-archive)
;; 2018-02-28T21:00:57+0530
(defun cp/corresponding-text-file ()
(interactive)
(save-excursion
(end-of-line)
(if (derived-mode-p 'dired-mode)
;; 2018-08-05T02:01:26+0530 - support directories too
(let* ((file-or-dir (dired-file-name-at-point))
(file (if (file-directory-p file-or-dir)
(replace-regexp-in-string "/$" "" file-or-dir)
file-or-dir)))
(find-file (concat file ".txt"))))))
;; 2018-07-09T23:22:17+0530
;; a little buggy wrt clicks
(defun cp/dired-launch-or-open (event)
(interactive "e")
;; if point is on a folder, open it with dired
;; otherwise, call launch-files-dired
(if (directory-name-p (dired-file-name-at-point))
(dired-find-file)
(launch-files-dired nil (dired-get-marked-files))))
(defun contrapunctus-delete-file-at-point (&optional prefix)
(interactive "P")
(let ((file (buffer-substring (point-at-bol) (point-at-eol))))
(if (file-exists-p file)
(progn
(delete-file file)
(if prefix
;; delete current line
(delete-region (point-at-bol)
(1+ (point-at-eol)))
;; delete current paragraph
(mark-paragraph)
(delete-active-region)
(forward-line 2))
(message "Deleted %s" file))
(error "File %s does not exist!" file))))
(defun contrapunctus-file-at-point-exists-p ()
(interactive)
(let ((file (buffer-substring (point-at-bol)
(point-at-eol))))
(if (and (not (string-empty-p file))
(file-exists-p file))
(message "%s" t)
(error "File %S does not exist!" file))))
#+END_SRC
#+BEGIN_SRC emacs-lisp
(use-package contrasync
:load-path "~/.emacs.d/contrapunctus/contrasync/"
:config
(setq contrasync-disk-path "/media/anon/kash-sg-2tb/"
contrasync-source-paths
`("~/.emacs.d/"
"~/1-music-notation/"
"~/Documents/"
"~/.config/"
"~/.local/"
("~/phone/Nokia 6.1/" ,contrasync-disk-path "phone/Nokia 6.1/"))))
(use-package peep-dired
:disabled
;; ;; didn't work too well 🤔
;; :config
;; (setq peep-dired-cleanup-eagerly t)
:hook
(dired-mode . peep-dired))
#+END_SRC
** comint
#+BEGIN_SRC emacs-lisp
(use-package comint