On 12/11/13 10:37, Ankit Shah wrote:
> I've started using LyX for writing my final Term Paper.

oh great! you're already a user then!

> I would love
> to work on Advance find and replace as you suggested. I found some
> bug tickets interesting regarding the same. I'm participating in such
> collaborative development for the first time so can anyone please
> brief me as to how to start making changes

have a glance at the LyX wiki developers pages

  http://wiki.lyx.org/Devel

out of which a quick glance at these diagrams may be helpful to have
a visual clue of the data structures used within LyX

  http://wiki.lyx.org/Devel/Diagrams

My quick summary on LyX internals:

src/support/*.{h,cpp}
        support functionality, such as files, filename mangling, OS abstraction,
        string character encoding/decoding, file streams, etc...

src/*.{h,cpp}
        core "model" files, in the model-view pattern sense, namely all 
functionality
        related to document, text, paragraphs, maths handling, regardless of 
how it
        is represented on screen

src/frontends/qt4/*.{h,cpp}
        core "view" files, in the model-view pattern sense, namely all 
functionality
        related to visual representation on-screen, implemented using Qt (don't 
be fooled
        by the plural of frontends, once upon a time there used to be an 
alternate front-end,
        now it's everything only Qt-based)

src/frontends/qt4/ui/*.ui
        Qt XML-based UI files describing most of the dialogs and panels; these 
can be edited
        using designer-qt4, a WYSIWYG editor for this kind of files

src/frontends/*.{h,cpp}
        still "view" files, but which once upon a time pretended to be 
independent of
        the specifically chosen front-end.

lib/ui/stdmenus.inc
        Key file with most of the LyX menu items

lib/bind/cua.bind
        Key file with most of the LyX short-cut key bindings
....

So, users interacting with the LyX GUI generate events captured in the 
src/../qt4/* files,
which are then dispatched to appropriate core model elements in src/*.{h,cpp} 
through a
mechanism called "LFUN".

Specifically, for Advanced Find & Replace, all GUI stuff is in

  src/frontends/qt4/FindAndReplace.cpp

whilst all the actual searching throughout the document happens in

  src/lyxfind.cpp

More on a concrete and practical side, 1st thing you have to know is that LyX 
has a powerful
debugging feature. Just compile it with

  git clone .....
  cd lyx
  ./autogen.sh
  ./configure --enable-debug
  make -j4

then, launch LyX from the command-line as:

  ./src/lyx -dbg find

the "find" keyword enables all debugging lines that read in the *.cpp code as:

  LYXERR(Debug::FIND, "...");

You can type

  ./src/lyx -dbg

to get a list of all components/features of LyX that can be independently 
enabled while debugging,
namely

  ./src/lyx -dbg find,workarea

would print out all debugging messages related to find and replace, as well as 
workarea-related events.

So, launching with "-dbg find" and then activating Advanced Find & Replace 
(menu item, or C-S-f), then
searching for some basic text, should bring you plenty of output on the 
terminal. You can search for
these strings in ..../qt4/FindAndReplace.cpp, as well as in src/lyxfind.cpp, to 
understand the flow
of the code.

> and submit bug patches.

guess it doesn't really matter at this stage. Once you get to a point in which 
you want to share
some patch, then you can send the patch by e-mail at the beginning where it's 
small, and/or also
attach the patch to the ticket in the on-line trac system. Then we see whether 
we need to switch
to git & friends, but that's surely for later...

> I'll trying to work on this minor bug
> #8848 <http://www.lyx.org/trac/ticket/8884>.

So, first thing here would be: replicate the problem, namely I could NOT 
replicate the problem
on my own laptop, perhaps it doesn't show up on mine (used to be 12.10, then 
13.04 now I run 13.10),
or perhaps I didn't understand what the reporter said, etc...

Thanks,

        T.

Reply via email to