;;; -*- lexical-binding: t -*- ;; ;; this file: ;; https://dataswamp.org/~incal/emacs-init/edit.el (require 'string) (require 'sudo-user-path) (require 'tabs) (require 'window-incal) (defun indent-buffer () (interactive) (indent-region (point-min) (point-max)) ) (defun insert-char-to-col (char col) "Insert CHAR from point to column COL." (interactive "cchar: \nncol: ") (let*((len (- col (current-column))) (str (make-string len char)) ) (insert str) )) (defun insert-string-centered (str &optional width) (interactive (list (read-string "string: ") (read-number "width: " (window-text-width)) )) (or width (setq width (window-text-width))) (let*((span (if (and width (< 0 width)) width (window-text-width))) (str-len (length str)) (pad (- (/ (- span str-len) 2) (if (zerop (mod str-len 2)) 1 0) )) (pad-str (make-string pad ?\s)) ) (insert pad-str str) )) (defalias 'isc #'insert-string-centered) (defun transpose-over-word () (interactive) (backward-char) (push-mark) (forward-word 3) (backward-char) (transpose-words 0) (pop-mark) (forward-word) ) (defun increase-values (inc) (interactive "p") (while (re-search-forward "[0-9]+" nil t) (let*((digit (string-to-number (match-string 0))) (sum (+ digit inc)) ) (replace-match (format "%s" sum)) ))) ;; (setq before-save-hook nil) (defun before-save-hook-f () (untab-all) (delete-trailing-whitespace) ) (add-hook 'before-save-hook #'before-save-hook-f) (defun back-to-dwim () (interactive) (scroll-right) (let ((beg (point))) (back-to-indentation) (when (= beg (point)) (beginning-of-line) ))) (provide 'edit)