lh.el (2821B)
1 ;; -*- lexical-binding: t; -*- 2 3 (defvar lh/filepath-delims 4 "[\"']") 5 6 (defun lh/region-bounds-full-lines (start end) 7 (cons 8 (save-excursion 9 (goto-char start) 10 (line-beginning-position)) 11 (save-excursion 12 (goto-char end) 13 (line-end-position)))) 14 15 (defun lh/move-region-up () 16 (interactive) 17 (let* ((deactivate-mark nil) 18 (bounds (lh/region-bounds-full-lines (region-beginning) (region-end))) 19 (text (buffer-substring (car bounds) (cdr bounds)))) 20 (delete-region (car bounds) (cdr bounds)) 21 (transpose-lines 1) 22 (forward-line -2) 23 (set-mark (point)) 24 (insert text) 25 (activate-mark))) 26 27 (defun lh/move-line-up () 28 (interactive) 29 (if (region-active-p) 30 (lh/move-region-up) 31 (transpose-lines 1) 32 (forward-line -2))) 33 34 (defun lh/move-region-down () 35 (interactive) 36 (let* ((deactivate-mark nil) 37 (bounds (lh/region-bounds-full-lines (region-beginning) (region-end))) 38 (text (buffer-substring (car bounds) (cdr bounds)))) 39 (delete-region (car bounds) (cdr bounds)) 40 (forward-line) 41 (transpose-lines 1) 42 (forward-line -1) 43 (set-mark (point)) 44 (insert text) 45 (activate-mark))) 46 47 (defun lh/move-line-down () 48 (interactive) 49 (if (region-active-p) 50 (lh/move-region-down) 51 (forward-line) 52 (transpose-lines 1) 53 (forward-line -1))) 54 55 (defun lh/extern-open-file (file) 56 (shell-command (concat "xdg-open " (shell-quote-argument file)))) 57 58 (defun lh/extern-open-current-file () 59 (interactive) 60 (let ((files (if (eq major-mode 'dired-mode) 61 (dired-get-marked-files) 62 (list (buffer-file-name))))) 63 (mapc #'lh/extern-open-file files))) 64 65 (defun lh/file-name-from-cursor () 66 (save-excursion 67 (let ((start (progn 68 (search-backward-regexp lh/filepath-delims) 69 (forward-char) 70 (point))) 71 (end (progn 72 (search-forward-regexp lh/filepath-delims) 73 (backward-char) 74 (point)))) 75 (buffer-substring start end)))) 76 77 (defun lh/extern-open-file-at-cursor () 78 (interactive) 79 (lh/extern-open-file (lh/file-name-from-cursor))) 80 81 (defun lh/base64-encode-file (filename) 82 (with-temp-buffer 83 (insert-file-contents filename) 84 (base64-encode-region (point-min) (point-max)) 85 (buffer-string))) 86 87 (defun lh/doas-current-buffer () 88 (interactive) 89 (let ((old-point (point)) 90 (old (current-buffer))) 91 (find-file (concat "/doas::" (buffer-file-name))) 92 (goto-char old-point) 93 (kill-buffer old))) 94 95 (defun lh/buffer-create-new () 96 (interactive) 97 (let ((buf (generate-new-buffer "new"))) 98 (switch-to-buffer buf) 99 (setq-local buffer-offer-save t) 100 buf)) 101 102 (defun lh/pop-out-buffer () 103 (interactive) 104 (make-frame) 105 (switch-to-prev-buffer)) 106 107 (provide 'lh)