Some emacs nifties
First, here’s a way to insert at current position the last message printed
into the minibuffer… well not exactly, in
*Messages*
buffer in fact. I was
tired of doing it myself after invoking, e.g.,
M-x emacs-version
.
;; print last message
;; current-message is already lost by the time this gets called
(defun dim:previous-message (&optional nth)
"get last line of *Message* buffer"
(with-current-buffer (get-buffer "*Messages*")
(save-excursion
(goto-char (point-max))
(setq nth (if nth nth 1))
(while (> nth 0)
(previous-line)
(setq nth (- nth 1)))
(buffer-substring (line-beginning-position) (line-end-position)))))
(defun dim:insert-previous-message (&optional nth)
"insert last message of *Message* to current position"
(interactive "p")
(insert (format "%s" (dim:previous-message nth))))
(global-set-key (kbd "C-c m") 'dim:insert-previous-message)
Now I stumbled accross
Planet Emacsen and saw this
Emacs Utility Functions
post, containing a version of
duplicate-current-line
that I didn’t
like… here’s mine:
;; duplicate current line
(defun duplicate-current-line (&optional n)
"duplicate current line, make more than 1 copy given a numeric argument"
(interactive "p")
(save-excursion
(let ((nb (or n 1))
(current-line (thing-at-point 'line)))
;; when on last line, insert a newline first
(when (or (= 1 (forward-line 1)) (eq (point) (point-max)))
(insert "\n"))
;; now insert as many time as requested
(while (> n 0)
(insert current-line)
(decf n)))))
(global-set-key (kbd "C-S-d") 'duplicate-current-line)
And a last one inspired by some strange
vim
behavior for which I fail to see
a need:
;; on request by cyrilb, who missed it from vim
;; no global-set-key yet, still have to think I'll use it someday...
(defun copy-char-from-prev-line ()
"Copy char at same position on previous line, when such a line and position exists"
(interactive)
(let ((c)
(p (- (point) (line-beginning-position))))
(save-excursion
(when (eq 0 (forward-line -1))
(when (< (+ (point) p) (line-end-position))
(forward-char p)
(setq c (thing-at-point 'char)))))
(when c
(insert c))))
Next time I’ll try to talk about
rcirc-groups
or
cssh
which have managed to
take some of my free time recently.