X-Git-Url: https://git.shemshak.org/~bandali/configs/blobdiff_plain/2b34d6dd398163f85acd95cded83c573a02a5c72..59ff41b64982aa2c3f9fc70ad2b6fb0f76fab0db:/init.org diff --git a/init.org b/init.org index 9a420d0..049eaa8 100644 --- a/init.org +++ b/init.org @@ -445,6 +445,26 @@ Convenience macro for =setq='ing multiple variables to the same value: `(progn ,@(mapcar (lambda (x) (list 'setq x value)) vars))) #+end_src +The following process-related stuff from [[https://github.com/alezost/emacs-config][alezost's emacs-config]]. + +#+begin_src emacs-lisp +(defun a/start-process (program &rest args) + "Same as `start-process', but doesn't bother about name and buffer." + (let ((process-name (concat program "_process")) + (buffer-name (generate-new-buffer-name + (concat program "_output")))) + (apply #'start-process + process-name buffer-name program args))) + +(defun a/dired-start-process (program &optional args) + "Open current file with a PROGRAM." + ;; Shell command looks like this: "program [ARGS]... FILE" (ARGS can + ;; be nil, so remove it). + (apply #'a/start-process + program + (remove nil (list args (dired-get-file-for-visit))))) +#+end_src + * Core :PROPERTIES: :CUSTOM_ID: core @@ -927,7 +947,8 @@ There's no way I could top that, so I won't attempt to. (defun a/eshell-setup () (make-local-variable 'company-idle-delay) - (defvar company-idle-delay nil) + (defvar company-idle-delay) + (setq company-idle-delay nil) (bind-keys :map eshell-mode-map ("C-d" . a/eshell-quit-or-delete-char) ("C-S-l" . a/eshell-clear) @@ -1052,7 +1073,39 @@ TODO: break this giant source block down into individual org sections. (use-package dired :defer t - :config (setq dired-listing-switches "-alh")) + :config + (setq dired-listing-switches "-alh") + + ;; easily diff 2 marked files + ;; https://oremacs.com/2017/03/18/dired-ediff/ + (defun dired-ediff-files () + (interactive) + (defvar ediff-after-quit-hook-internal) + (let ((files (dired-get-marked-files)) + (wnd (current-window-configuration))) + (if (<= (length files) 2) + (let ((file1 (car files)) + (file2 (if (cdr files) + (cadr files) + (read-file-name + "file: " + (dired-dwim-target-directory))))) + (if (file-newer-than-file-p file1 file2) + (ediff-files file2 file1) + (ediff-files file1 file2)) + (add-hook 'ediff-after-quit-hook-internal + (lambda () + (setq ediff-after-quit-hook-internal nil) + (set-window-configuration wnd)))) + (error "no more than 2 files should be marked")))) + :bind (:map dired-mode-map + ("e" . dired-ediff-files) + ("E" . dired-toggle-read-only) + ("\\" . dired-hide-details-mode) + ("z" . (lambda () + (interactive) + (a/dired-start-process "zathura")))) + :hook (dired-mode . dired-hide-details-mode)) (use-package eldoc :when (version< "25" emacs-version) @@ -1841,6 +1894,20 @@ Also see [[https://www.emacswiki.org/emacs/rebox2][rebox2]]. :bind ("C-=" . er/expand-region)) #+end_src +** multiple-cursors + +#+begin_src emacs-lisp +(use-package multiple-cursors + :bind + (("C-S-" . mc/add-cursor-on-click) + (:prefix-map a/mc-prefix-map + :prefix "C-c m" + ("c" . mc/edit-lines) + ("n" . mc/mark-next-like-this) + ("p" . mc/mark-previous-like-this) + ("a" . mc/mark-all-like-this)))) +#+end_src + * Email :PROPERTIES: :CUSTOM_ID: email @@ -1861,9 +1928,7 @@ Also see [[https://www.emacswiki.org/emacs/rebox2][rebox2]]. read-mail-command 'gnus) (use-package gnus - :bind (("C-c m" . gnus) - ("C-c M" . gnus-unplugged) - ("s-m" . gnus) + :bind (("s-m" . gnus) ("s-M" . gnus-unplugged)) :init (setq