;; This file: http://user.it.uu.se/~embe8573/conf/emacs-init/align.el (defun eat-space () "When on a blank line, `delete-blank-lines'. Else, if spaces and/or tabs are to the _right_ of point, delete them. Else, ditto _left_, only save one whitespace." (interactive) (let ((start (point)) (same-line-whitespace " \t") ) (beginning-of-line) (if (looking-at (format "^[%s]*$" same-line-whitespace)) (delete-blank-lines) (progn (goto-char start) (if (= 0 (skip-chars-forward same-line-whitespace)) (progn (delete-horizontal-space) (insert "\s") ) (delete-region start (point)) ))))) (defconst stop-char-default "\\(^\\|[[:punct:]]\\|[[:space:]][[:alnum:]]\\)") (defvar stop-char stop-char-default) (require 'erc) (require 'w3m-unisearch) (defun align-from-left (&optional set-char) (interactive "p") (let ((start (point))) (if (= 4 set-char) ; set stop-char (setq stop-char (regexp-quote (char-to-string (read-char)))) (if (= 16 set-char) ; reset stop-char (setq stop-char stop-char-default) )) (re-search-backward stop-char (line-beginning-position) t) ; NOERROR (let*((hit-str-prop (erc-string-no-properties (match-string 0))) (hit-str (unless (empty-string-p hit-str-prop) (substring hit-str-prop 0 1)))) (if (string= " " hit-str) (forward-char 1))) (insert (make-string (- start (point)) ? )))) (defun backward-char-while-same () (interactive) (let*((pos (point)) (char (buffer-substring-no-properties pos (1+ pos))) ) (skip-chars-backward char) ))