help-gnu-emacs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Copying a whole line using kill-ring-save in emacs 24.3.1


From: Alan
Subject: Re: Copying a whole line using kill-ring-save in emacs 24.3.1
Date: Tue, 19 Mar 2013 16:07:58 -0400

Thanks so much for your help. Your code works. I just have a couple follow up questions:

1. Although your code does copy the line, the behavior is a little different from what I had in emacs version 24.2.1. In 24.2.1, when I hit "M-w", the cursor would bounce to the beginning of the line, then back to its original position while copying. It's just a visual thing, but I like it because it tells me the line was definitely copied. Is there some way to mimic that behavior?

2. This is less relevant, but in the original wiki page from which I copied the code, http://www.emacswiki.org/emacs/WholeLineOrRegion, there lists another function that kills the current line:

(put 'kill-region 'interactive-form      
     '(interactive
       (if (use-region-p)
           (list (region-beginning) (region-end))
         (list (line-beginning-position) (line-beginning-position 2)))))

This code works for me in the newest emacs version of 24.3.1. How come this code works and not the "copy whole line" code in my original message?

Thanks.


On Mon, Mar 18, 2013 at 11:30 AM, Le Wang <l26wang@gmail.com> wrote:
On Sun, Mar 17, 2013 at 4:01 PM, Alan <bowl.of.petunias@gmail.com> wrote:
> Hi,
>
> I've used the following code, from
> http://www.emacswiki.org/emacs/WholeLineOrRegion, to copy a whole line:
>
> (put 'kill-ring-save 'interactive-form
>      '(interactive
>        (if (use-region-p)
>            (list (region-beginning) (region-end))
>          (list (line-beginning-position) (line-beginning-position 2)))))
>
>
> Basically, it allows the use of "meta-w" to copy the entire line where the
> cursor is currently located, as long as no text is visually selected.
> (Transient Mark Mode must be enabled for this to work.) However, after
> upgrading to emacs version 24.3.1 (from 24.2.1), this fails to work.
>
> When I visit a file for the first time and hit "meta-w", I get the error:
> “Wrong type argument: integer-or-marker-p, nil”, although it does
> successfully copy the line. However, further “meta-w” presses copy from the
> current position to the last mark, regardless of whether the region is
> highlighted.
>
> Any thoughts on getting the “Meta-w” to work? Thanks.

It looks like functionality has been added to highlight the region that was
copied.  The problem is your snippet relies on the implementation instead of
the API.  It's better to define your own command and remap.

(defun my-kill-ring-save (beg end)
  (interactive (if (use-region-p)
                   (list (region-beginning) (region-end))
                 (list (line-beginning-position) (line-beginning-position 2))))
  (kill-ring-save beg end))
(global-set-key [remap kill-ring-save] 'my-kill-ring-save)



--
Le


reply via email to

[Prev in Thread] Current Thread [Next in Thread]