[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: How to delay loading of packages (when eval-after-load does notapply
From: |
Raffaele Ricciardi |
Subject: |
Re: How to delay loading of packages (when eval-after-load does notapply)? |
Date: |
Mon, 20 Aug 2012 14:39:08 +0100 |
User-agent: |
Mozilla/5.0 (X11; Linux i686; rv:14.0) Gecko/20120713 Thunderbird/14.0 |
(global-set-key (kbd "C-w")
On 20/08/12 13:40, Sebastien Vauban wrote:
> Hi Raffaele,
>
> "Sebastien Vauban" wrote:
>> Raffaele Ricciardi wrote:
>>> On 08/17/2012 01:11 PM, Sebastien Vauban wrote:
>>>> Now, wanting to apply the same mechanism for other slow parts of
my .emacs
>>>> file, I'm stuck with this one[1]:
>>>>
>>>> --8<---------------cut here---------------start------------->8---
>>>> ;; add the ability to copy or cut the current line without
marking it
>>>> ;; (no active region) -- idea stolen from SlickEdit
>>>> (defadvice kill-ring-save (before slickcopy activate compile)
>>>> "When called interactively with no active region, copy the
current
>>>> line instead."
>>>> (interactive
>>>> (if mark-active (list (region-beginning) (region-end))
>>>> (message "Copied the current line")
>>>> (list (line-beginning-position)
>>>> (line-beginning-position 2)))))
>>>>
>>>> (defadvice kill-region (before slickcut activate compile)
>>>> "When called interactively with no active region, kill the
current
>>>> line instead."
>>>> (interactive
>>>> (if mark-active (list (region-beginning) (region-end))
>>>> (list (line-beginning-position)
>>>> (line-beginning-position 2)))))
>>>> --8<---------------cut here---------------end--------------->8---
>>>
>>> See http://www.emacswiki.org/emacs/WholeLineOrRegion
>>>
>>> Note the use of `use-region-p' instead of 'mark-active'.
>>
>> I don't understand all the subtleties, except that it uses a
function directly
>> defined in `simple.el', but it does a great job: no noticeable delay!
>
> After using it for a couple of "workable" hours, I must say that the code
> found on EmacsWiki does not work as good (at least from my point of
view) as
> the code above.
>
> Two (minor) problems found:
>
> - With the above code, when killing multiple subsequent lines, they
are merged
> as one entry in the kill ring.
>
> With the code from EW, they stay separate entries.
>
> - With the above code, I can paste the "copied line" wherever I want,
> including in the middle of a line:
>
> Some *sentence (* = position of point)
>
> becomes:
>
> Some YANKED TEXT*sentence
>
> With the code from EW, the yanked text is inserted above the
current line,
> as if point was at the beginning of line when I'm yanking.
>
> Some *sentence (* = position of point)
>
> becomes:
>
> YANKED TEXT
> *Some sentence
>
> BTW, point's position is changed after yanking.
>
> Do you observe that as well?
I don't use those commands. I knew about that EmacsWiki page, so I told
you.
Well, go back to your original functions, then, after replacing
`mark-active' with
`use-region-p'.
However, using advices is overkill for what you are trying to
accomplish. Since
you are looking for an improved version of existing commands, the cleanest
approach is to wrap such commands as new commands and then replace the
existing
key bindings, like this:
(defun rr-region-or-line (&optional ^verbose)
"Return region, or current line instead if no region is active."
(if (use-region-p)
(list (region-beginning) (region-end))
(when ^verbose
(message "Copied the current line"))
(list (line-beginning-position)
(line-beginning-position 2))))
(defun rr-kill-ring-save (^start ^end)
"When called interactively with no active region, copy the current
line instead."
(interactive (rr-region-or-line t))
(kill-ring-save ^start ^end))
(defun rr-kill-region (^start ^end)
"When called interactively with no active region, kill the current
line instead."
(interactive (rr-region-or-line))
(kill-region ^start ^end))
Cheers.
- How to delay loading of packages (when eval-after-load does not apply)?, Sebastien Vauban, 2012/08/15
- RE: How to delay loading of packages (when eval-after-load does notapply)?, Drew Adams, 2012/08/15
- Message not available
- Re: How to delay loading of packages (when eval-after-load does notapply)?, Sebastien Vauban, 2012/08/17
- Re: How to delay loading of packages (when eval-after-load does notapply)?, Raffaele Ricciardi, 2012/08/17
- Re: How to delay loading of packages (when eval-after-load does notapply)?, Sebastien Vauban, 2012/08/17
- Re: How to delay loading of packages (when eval-after-load does notapply)?, Raffaele Ricciardi, 2012/08/17
- Re: How to delay loading of packages (when eval-after-load does notapply)?, Sebastien Vauban, 2012/08/17
- Re: How to delay loading of packages (when eval-after-load does notapply)?, Sebastien Vauban, 2012/08/20
- Re: How to delay loading of packages (when eval-after-load does notapply)?,
Raffaele Ricciardi <=
- Re: How to delay loading of packages (when eval-after-load does notapply)?, Sebastien Vauban, 2012/08/20