;;; -*- lexical-binding: t -*- ;;; ;;; this file: ;;; http://user.it.uu.se/~embe8573/emacs-init/sort-my.el ;;; https://dataswamp.org/~incal/emacs-init/sort-my.el (require 'edit) (require 'erc) (require 'get-search-string) (require 'sort) (setq sort-fold-case t) (defun sort-2nd-field (start end) (interactive "r") (sort-fields 2 start end) ) (defalias 's2f #'sort-2nd-field) (defun sort-lines-random (start end) (interactive "r") (save-excursion (save-restriction (narrow-to-region start end) (goto-char (point-min)) (sort-subr nil #'forward-line ; NEXTRECFUN #'end-of-line ; ENDRECFUN nil nil (lambda (_ __) (zerop (random 2)) ))))) (defalias 'r #'sort-lines-random) (defun sort-whole-lines (start end) (interactive "r") (save-excursion (let ((s (progn (goto-char start) (line-beginning-position))) (e (progn (goto-char end) (line-end-position))) ) (sort-lines nil s e) ))) (defun sort-buffer-and-save () (interactive) (sort-lines nil (point-min) (point-max)) (save-buffer) ) (defalias 'bs #'sort-buffer-and-save) (defun sort-buffer-random () (interactive) (sort-lines-random (point-min) (point-max)) (save-buffer) ) ;;; sort me: this is the test string that is just a test string (defun insert-string-list (string-list) (when string-list (insert (format "%s" (car string-list))) (dolist (s (cdr string-list)) (insert (format " %s" s))))) (defun sort-line-words (start stop &optional set-delim) (interactive "r\nP") (let*((str (region-to-string)) (delim-str (when set-delim (read-from-minibuffer "delimiter: "))) (str-list (split-string str delim-str)) (sorted (erc-sort-strings str-list)) ) (kill-region start stop) (if set-delim (progn (dolist (s (reverse (cdr (reverse sorted)))) (insert (format "%s%s" s delim-str))) (insert (format "%s" (car (last sorted))))) (insert-string-list sorted) ))) (defalias 'sort-horizontally #'sort-line-words) (defun scramble (beg end) "Shuffle chars in region from BEG to END." (interactive "r") (when (use-region-p) (save-excursion (let*((str (region-to-string)) (chars (delete "" (split-string str ""))) (rand-chars (sort chars (lambda (_ __) (zerop (random 2))))) ) (delete-region beg end) (dolist (c rand-chars) (insert c) ))))) (require 'seq) (defun scramble-string (str) "Randomize the characters of a string." (interactive "sscramble me: ") (let ((rand-str (seq-sort (lambda (_ __) (zerop (random 2))) str ))) (if (called-interactively-p 'any) (message rand-str) rand-str) )) (defun comic-book-insult () (interactive) (insert (concat (scramble-string "@#$%&") "!")) ) ;; (comic-book-insult) ; @#$%&! ;; (comic-book-insult) ; $&#@%! ;; (scramble-string "Hello there, Emacs is very cool piece of software") ;; "aye eposrr lvre olsec,ewfico ceti ftomH hseoa l E" (provide 'sort-my)