I was just going to implement the same thing! I'll take a look at it tomorrow and see if I can offer any assistance. (I sent this preliminary email so you wouldn't think the mailing list was dead :)
On 6/27/14, Johann Klähn <[email protected]> wrote: > Hi there, > I would like to work on a patch to add support for ]p and [p to evil. I > have some working code (see below) to adjust the indent after a call to > evil-paste-after / evil-paste-before, but I would appreciate tips on how to > integrate this with existing evil code (especially so that ]p will be a > single undo step, that evil-paste-pop still works, ...). > > All the best, > Johann > > (defun get-common-indent-in-region (start end) > (setq end (copy-marker end)) > (unwind-protect > (let (indentation) > (save-excursion > (goto-char start) > (or (bolp) (forward-line 1)) > (while (< (point) end) > (skip-chars-forward " \t") > (setq indentation > (cons (current-column) indentation)) > (forward-line 1))) > (apply #'min indentation)) > (move-marker end nil))) > > (defun my-evil-adjust-indent-afer-paste () > (interactive) > > (unless (memq last-command > '(evil-paste-after > evil-paste-before)) > (error "Previous command was not a line-wise evil-paste: %s" > last-command)) > > (let* ((start (evil-get-marker ?\[)) > (end (evil-get-marker ?\])) > (common (get-common-indent-in-region start end)) > (this > (save-excursion > (cond > ((eq last-command 'evil-paste-before) > (goto-char end) > (forward-line 1)) > (t > (goto-char start) > (forward-line -1))) > (skip-chars-forward " \t") > (current-column)))) > (indent-rigidly start end (- this common)))) > _______________________________________________ implementations-list mailing list [email protected] https://lists.ourproject.org/cgi-bin/mailman/listinfo/implementations-list
