[prev in list] [next in list] [prev in thread] [next in thread]
List: lyx-devel
Subject: Re: [PATCH] Change tracking hacking
From: Johnathan Burchill <jkerrb () users ! sourceforge ! net>
Date: 2005-02-21 0:51:02
Message-ID: 200502201751.09252.jkerrb () users ! sourceforge ! net
[Download RAW message or body]
[Attachment #2 (multipart/signed)]
Lars Gullik Bjønnes wrote:
>Juergen Spitzmueller <[EMAIL PROTECTED]> writes:
>
>| Lars Gullik Bjønnes wrote:
>>
>>> I am very happy to see bugs fixed. but I am a bit wary of adding
>>> functionality at this stage.
>>
>| It's a bug fix really. The unability to break paragraphs is a severe (and
>| the biggest remaining AFAICS) limitation of the change tracker (see bug
>| 880).
>
>That is a limitation and missing functionality, not really a bug.
>(even if it has a bug number)
I agree; not being able to break "unchanged" paragraphs was intentionally
disabled from the change-tracking algorithm. Providing this feature requires
quite a lot of modification to the source code, spanning several files,
including
1) a new inset, called InsetNewparagraph, analogous to InsetNewline. It is a
placeholder that indicates a new paragraph was inserted within unchanged
text. It is removed when explicitly deleted by "Backspace", or (unlike
InsetNewline) the change is accepted during a merge.
This part was included in the initial attachment that goes with this thread.
2) making sure that every lyx command that alters the cursor position checks
to see if it should do something special upon finding an InsetNewparagraph.
That is, the cursor should never appear to the right of the inset (in
Left-To-Right mode), and backspace at the beginning of a paragraph should
merge it with the previous paragraph if the previous paragraph ends with an
InsetNewparagraph. And so on.
As I found out this week, only part of this was accomplished in the initial
patch. I gotta say, the cursor positioning code seems linear. Would be nice
if I could've added a new inset, and defined within its implementation how it
responds to cursor movement, instead of chasing down all the special cases in
text.C, text2.C, text3.C, paragraph_funcs.C, etc... Maybe I've got the wrong
idea altogether on how to break paragraphs in change tracking --- discussion
welcome :).
3) adding the ability to merge unchanged paragraphs together. That could be
accomplished by putting a (Change::Type) Change::DELETED InsetNewparagraph
between the two paragraphs as a placeholder during change tracking.
It all seems hackish, but that's the best I've been able to come up with for
breaking paragraphs. Points (2) and (3) above should discourage you from
implementing this feature in the first 1.4 release if you're now in feature
freeze mode.
>
>I am not alian to letting this improvement in, but I'd like it
>separate from the bug fix.
>
>>> Are you able to split up the patch to
>>> keep the bugfix and the new functionality separate?
>>
>| That would be good anyway.
>
>yes.
I've attached the bug fix. There's no point in providing the break-paragraph
patch until it's fully functional. If you want to play with it, see my first
attachment in this thread. Whether or not you want to implement the
functionality in 1.4.0, I'll work on it in the meantime, and provide patches
as she goes.
>
>--
> Lgb
Cheers,
JB
--
Johnathan K. Burchill, Ph.D.
jkerrb@users.sourceforge.net
[Attachment #5 (application/pgp-signature)]
["lyx-bug-1277-fix.diff.gz" (application/x-gzip)]
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic