On Wed, Apr 14, 2010 at 06:14:29PM +0000, Vegard Øye wrote:
(Any tips on making that function shorter? :)
(defun vimpulse-operator-message (template &optional beg end length type) "Echo a message like \"Deleted 2 characters\". TEMPLATE is a string like \"Deleted <N>\", where <N> is substituted with the amount of characters or lines. BEG and END are the range of text. If you specify LENGTH, they are ignored. This function respects `viper-change-notification-threshold'." (let* ((beg (or beg (vimpulse-visual-beginning) 1)) (end (or end (vimpulse-visual-end) 1)) (type (or type vimpulse-this-motion-type)) (length (case type (block (* (or vimpulse-visual-width 1) (or vimpulse-visual-height 1))) (line (or length (count-lines beg end))) (t (or length (abs (- end beg)))))) (template (replace-regexp-in-string "<N>" (apply 'format (append (if (eq type 'block) `("%sx%s character%s" ,(or vimpulse-visual-height 1) ,(or vimpulse-visual-width 1)) `(,(concat "%s " (if (eq type 'line) "line" "character") "%s") ,length)) (list (if (/= 1 (abs length)) "s" "")))) template))) (when (and (< viper-change-notification-threshold length) (not (viper-is-in-minibuffer))) (message template)))) http://tinyurl.com/ycxdzml