Skip to content

Instantly share code, notes, and snippets.

@arialdomartini
Last active November 30, 2023 19:54
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save arialdomartini/f6f274faa4ad88270f6633742236097a to your computer and use it in GitHub Desktop.
Save arialdomartini/f6f274faa4ad88270f6633742236097a to your computer and use it in GitHub Desktop.
swap-marks.el
(defun my-dired--first-char-or-ask ()
(if (member (char-after (line-beginning-position)) `(?\s ,dired-marker-char))
(read-char "Which mark are you targeting? ")
(char-after (line-beginning-position))))
(defun my-dired-swap-marks-ask ()
(interactive)
(let ((mark (my-dired--first-char-or-ask)))
(my-dired-swap-marks (string mark))))
(defun my-dired-swap-marks (mark)
(save-excursion
(let ((inhibit-read-only t)
(beginning (dired-mark--region-beginning))
(end (dired-mark--region-end))
(active-marker (string dired-marker-char)))
(goto-char beginning)
(while (< (point) end)
(beginning-of-line)
(cond ((looking-at active-marker)
(replace-match mark nil nil nil nil))
((looking-at mark)
(replace-match active-marker nil nil nil nil)))
(forward-line 1)))))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment