[Top][All Lists]

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

Re: Emacs Lisp Programming Questions

From: David Combs
Subject: Re: Emacs Lisp Programming Questions
Date: Sun, 1 Nov 2009 06:59:05 +0000 (UTC)

In article <address@hidden>,
Kevin Rodgers  <address@hidden> wrote:
>clint.laskowski wrote:
>> Hello, I have a few questions about programming in
>> Emacs Lisp. I hope you can help. Here they are:
>> 1. Is this a good place to ask questions about programming in Emacs
>> Lisp, especially with regards to text processing? If there's a better
>> place, I'd appreciate knowing.
>> 2. I want to write an interactive Elisp program to remove sequential
>> duplicate lines from a buffer. This buffer is not sorted, and it
>> should not be sorted. The program should simply look for two
>> sequential lines that are identical, delete one, and then move on to
>> the next line and do it over until it reaches the end of the buffer.
>> BUT, I do not want the answer to this problem (i.e., I don't want an
>> Elisp answer) ... I want hints on how to program it. I want to learn
>> the answer myself, if possible.
>> Any ideas or pointers?
>Start by writing a keyboard macro that does what you want.  Then you
>can translate the commands invoked interactively into function calls.

I guess "edit-kbd-macro" and grabbing what it types out
would be the way to start that translation?

>Note that you can search for sequential duplicate lines using a
>regular expression.  

Please show an example -- I myself will learn something
from it.

It'd be cool to be able to get a regexp to extend past the
end of the line, yes?

BUT WAIT!  THIS IS *EMACS* -- doesn't work by lines --
whole buffer is just one huge long string, with newlines
interspersed here and there.  So, how to refer to a newline
as a plain old ordinary character, not "end of line" via "$"?

Yes, PLEASE, I'd REALLY like to see an example of such a regexp!

And if indeed that *can* be done, can you use that within
a query-replace somehow?

(Or will that miss every other one or something, because
if it sees two identical lines and replaces the 2nd
by "", then what if there is a third one also identical --
can't get the qr to back up to make a match?)

Anyway, an example would sure be nice, however you do it,
just so long as you do it via a regexp.  THANKS!

So write a keyboard macro that removes just
>1 (the next) such duplicate line -- it will be easy to wrap that
>function call into a while loop that processes the whole buffer.
>Kevin Rodgers
>Denver, Colorado, USA

reply via email to

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