(Sorry to everyone, seems my subscription to this list did not go through so I haven't been received your answers. I just stumbled across them via the gmane archive. Thus the reply-to-self.)
Gordon, Frank, thanks for taking the time to answer. I originally tried to define a command as Gordon mentioned (see below), but this lead to two separate undo steps (pasting and indenting). Regarding evil-paste-pop I think I like the :paste-command suggestion most, I may end up implementing that. As I am short on time currently, I likely won't get to it this month. (evil-define-command evil-paste-before-adjusting-indent (count &optional register yank-handler) "Like `evil-paste-before' but adjusts the indent to the current line." :suppress-operator t (interactive "P<x>") (evil-paste-before count register yank-handler) (my-evil-adjust-indent-after-paste 'before)) On Fri, Jun 27, 2014 at 2:26 PM, 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
