<feed xmlns='http://www.w3.org/2005/Atom'>
<title>sciteco/src/interface-ncurses.cpp, branch v2.5.2</title>
<subtitle>Scintilla-based Text Editor and COrrector</subtitle>
<link rel='alternate' type='text/html' href='https://git.fmsbw.de/sciteco/'/>
<entry>
<title>renamed the "NCurses" UI to "Curses" internally</title>
<updated>2014-11-17T03:41:18+00:00</updated>
<author>
<name>Robin Haberkorn</name>
<email>robin.haberkorn@googlemail.com</email>
</author>
<published>2014-11-17T03:41:18+00:00</published>
<link rel='alternate' type='text/html' href='https://git.fmsbw.de/sciteco/commit/?id=dceabff6cfc6bd6572a98b5c8f7775b42dc732a7'/>
<id>dceabff6cfc6bd6572a98b5c8f7775b42dc732a7</id>
<content type='text'>
 * does not change ./configure parameters
   You still have to specifiy --with-interface=ncurses for
   the Curses interface with default settings
 * the "NCurses" UI was used for many different Curses
   variants, so plain "Curses" is a better name.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
 * does not change ./configure parameters
   You still have to specifiy --with-interface=ncurses for
   the Curses interface with default settings
 * the "NCurses" UI was used for many different Curses
   variants, so plain "Curses" is a better name.
</pre>
</div>
</content>
</entry>
<entry>
<title>Make sure QRegister::view is properly initialized and cleaned up</title>
<updated>2014-11-17T02:56:42+00:00</updated>
<author>
<name>Robin Haberkorn</name>
<email>robin.haberkorn@googlemail.com</email>
</author>
<published>2014-11-16T22:46:08+00:00</published>
<link rel='alternate' type='text/html' href='https://git.fmsbw.de/sciteco/commit/?id=2542eb02648294256a01ae4ecb6ac81bc8ab5094'/>
<id>2542eb02648294256a01ae4ecb6ac81bc8ab5094</id>
<content type='text'>
 * it must be initialized after the UI (Interface::main), so I added
   a View::initialize() function
 * the old initialize() method was renamed to setup()
 * use a global instance of QRegister::view so it is guaranteed to
   be destroyed only after any QRegisters that could still need it
 * Document API adapted to work with ViewCurrent references
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
 * it must be initialized after the UI (Interface::main), so I added
   a View::initialize() function
 * the old initialize() method was renamed to setup()
 * use a global instance of QRegister::view so it is guaranteed to
   be destroyed only after any QRegisters that could still need it
 * Document API adapted to work with ViewCurrent references
</pre>
</div>
</content>
</entry>
<entry>
<title>rewritten View and Interface base classes using the Curiously Recurring Template Pattern.</title>
<updated>2014-11-16T22:34:25+00:00</updated>
<author>
<name>Robin Haberkorn</name>
<email>robin.haberkorn@googlemail.com</email>
</author>
<published>2014-11-16T18:31:29+00:00</published>
<link rel='alternate' type='text/html' href='https://git.fmsbw.de/sciteco/commit/?id=38fcf6d15cdf09591e7d7a142ad724164875e433'/>
<id>38fcf6d15cdf09591e7d7a142ad724164875e433</id>
<content type='text'>
 * without the one-view-per-buffer designs, many Scintilla send message (SSM)
   calls could be inlined
 * with the new design, this was no longer possible using the abstract
   base classes. the CRT pattern allows inlining again but introduces
   a strange level of code obscurity.
 * tests suggest that at high optimization levels, the one-view-per-buffer
   design and the CRT pattern reduces typical macro runtimes by 30%
   (e.g. for symbols-extract.tes).
 * only updated the NCurses UI for the time being
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
 * without the one-view-per-buffer designs, many Scintilla send message (SSM)
   calls could be inlined
 * with the new design, this was no longer possible using the abstract
   base classes. the CRT pattern allows inlining again but introduces
   a strange level of code obscurity.
 * tests suggest that at high optimization levels, the one-view-per-buffer
   design and the CRT pattern reduces typical macro runtimes by 30%
   (e.g. for symbols-extract.tes).
 * only updated the NCurses UI for the time being
</pre>
</div>
</content>
</entry>
<entry>
<title>first working version of the one-view-per-buffer design</title>
<updated>2014-11-16T22:34:24+00:00</updated>
<author>
<name>Robin Haberkorn</name>
<email>robin.haberkorn@googlemail.com</email>
</author>
<published>2014-11-14T01:43:23+00:00</published>
<link rel='alternate' type='text/html' href='https://git.fmsbw.de/sciteco/commit/?id=8be99d3863a305046f0133116782734e87be0822'/>
<id>8be99d3863a305046f0133116782734e87be0822</id>
<content type='text'>
The user interface provides a Scintilla view abstraction and
every buffer is based on a view. All Q-Register strings use
a single dedicated view to save memory and initialization time
when using many string registers.

 * this means we can finally implement a working lexer configuration
   and it only has to be done once when the buffer is first added
   to the ring. It is unnecessary to magically restore the lexer
   styles upon rubout of EB (very hard to implement anyway). It
   is also not necessary to rerun the lexer configuration macro
   upon rubout which would be hard to reconcile with SciTECO's
   basic design since every side-effect should be attached to a
   character.
 * this means that opening buffers is slightly slower now
   because of the view initialization
 * on the other hand, macros with many string q-reg operations
   are faster now, since the document must no longer be changed
   on the buffer's view and restored later on.
 * also now we can make a difference between editing a document
   in a view and changing the current view, which reduces UI calls
 * the Document class has been retained as an abstraction about
   Scintilla documents, used by QRegister Strings.
   It had to be made virtual, so the view on which the document
   is created can be specified by a virtual function.
   There is no additional space overhead for Documents.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The user interface provides a Scintilla view abstraction and
every buffer is based on a view. All Q-Register strings use
a single dedicated view to save memory and initialization time
when using many string registers.

 * this means we can finally implement a working lexer configuration
   and it only has to be done once when the buffer is first added
   to the ring. It is unnecessary to magically restore the lexer
   styles upon rubout of EB (very hard to implement anyway). It
   is also not necessary to rerun the lexer configuration macro
   upon rubout which would be hard to reconcile with SciTECO's
   basic design since every side-effect should be attached to a
   character.
 * this means that opening buffers is slightly slower now
   because of the view initialization
 * on the other hand, macros with many string q-reg operations
   are faster now, since the document must no longer be changed
   on the buffer's view and restored later on.
 * also now we can make a difference between editing a document
   in a view and changing the current view, which reduces UI calls
 * the Document class has been retained as an abstraction about
   Scintilla documents, used by QRegister Strings.
   It had to be made virtual, so the view on which the document
   is created can be specified by a virtual function.
   There is no additional space overhead for Documents.
</pre>
</div>
</content>
</entry>
<entry>
<title>added all of SciTECO's declarations to the "SciTECO" namespace</title>
<updated>2014-11-11T03:14:01+00:00</updated>
<author>
<name>Robin Haberkorn</name>
<email>robin.haberkorn@googlemail.com</email>
</author>
<published>2014-11-11T03:14:01+00:00</published>
<link rel='alternate' type='text/html' href='https://git.fmsbw.de/sciteco/commit/?id=7206f6d1249da0dd8e879d0c0b26185fc6ef89d9'/>
<id>7206f6d1249da0dd8e879d0c0b26185fc6ef89d9</id>
<content type='text'>
normally, since SciTECO is not a library, this is not strictly
necessary since every library should use proper name prefixes
or namespaces for all global declarations to avoid name clashes.

However

 * you cannot always rely on that
 * Scintilla does violate the practice of using prefixes or namespaces.
   The public APIs are OK, but it does define global functions/methods,
   e.g. for "Document" that clashed with SciTECO's "TECODocument" class at
   link-time.
   Scintilla can put its definitions in a namespace, but this feature
   cannot be easily enabled without patching Scintilla.
 * a "SciTECO" namespace will be necessary if "SciTECO" is ever to be
   turned into a library. Even if this library will have only a C-linkage
   API, it must ensure it doesn't clutter the global namespace.

So the old "TECODocument" class was renamed back to "Document"
(SciTECO::Document).
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
normally, since SciTECO is not a library, this is not strictly
necessary since every library should use proper name prefixes
or namespaces for all global declarations to avoid name clashes.

However

 * you cannot always rely on that
 * Scintilla does violate the practice of using prefixes or namespaces.
   The public APIs are OK, but it does define global functions/methods,
   e.g. for "Document" that clashed with SciTECO's "TECODocument" class at
   link-time.
   Scintilla can put its definitions in a namespace, but this feature
   cannot be easily enabled without patching Scintilla.
 * a "SciTECO" namespace will be necessary if "SciTECO" is ever to be
   turned into a library. Even if this library will have only a C-linkage
   API, it must ensure it doesn't clutter the global namespace.

So the old "TECODocument" class was renamed back to "Document"
(SciTECO::Document).
</pre>
</div>
</content>
</entry>
<entry>
<title>avoid narrowing-conversion warning in C++11</title>
<updated>2014-04-25T14:56:25+00:00</updated>
<author>
<name>Robin Haberkorn</name>
<email>robin.haberkorn@googlemail.com</email>
</author>
<published>2014-04-25T14:56:25+00:00</published>
<link rel='alternate' type='text/html' href='https://git.fmsbw.de/sciteco/commit/?id=d90d3accdb574145a388e9d2825991a14c72960d'/>
<id>d90d3accdb574145a388e9d2825991a14c72960d</id>
<content type='text'>
 * as of gcc 4.7.2, -Wnarrowing is in -Wall
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
 * as of gcc 4.7.2, -Wnarrowing is in -Wall
</pre>
</div>
</content>
</entry>
<entry>
<title>use new EMCurses keyboard handler callback</title>
<updated>2014-02-18T13:37:59+00:00</updated>
<author>
<name>Robin Haberkorn</name>
<email>robin.haberkorn@googlemail.com</email>
</author>
<published>2014-02-18T13:37:59+00:00</published>
<link rel='alternate' type='text/html' href='https://git.fmsbw.de/sciteco/commit/?id=0674f295767f2e953baf2eec13cdd4be52468ca1'/>
<id>0674f295767f2e953baf2eec13cdd4be52468ca1</id>
<content type='text'>
 * should improve performance on EMCurses/Emscripten,
   since no polling for key events is necessary anymore
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
 * should improve performance on EMCurses/Emscripten,
   since no polling for key events is necessary anymore
</pre>
</div>
</content>
</entry>
<entry>
<title>ncurses: fixed info bar at startup</title>
<updated>2014-02-16T19:45:43+00:00</updated>
<author>
<name>Robin Haberkorn</name>
<email>robin.haberkorn@googlemail.com</email>
</author>
<published>2014-02-16T19:45:43+00:00</published>
<link rel='alternate' type='text/html' href='https://git.fmsbw.de/sciteco/commit/?id=dbd252c8eaa789ae844e89aae0d8a1673b7aa48f'/>
<id>dbd252c8eaa789ae844e89aae0d8a1673b7aa48f</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>updated Copyright to year 2014</title>
<updated>2014-02-15T17:48:29+00:00</updated>
<author>
<name>Robin Haberkorn</name>
<email>robin.haberkorn@googlemail.com</email>
</author>
<published>2014-02-15T17:48:29+00:00</published>
<link rel='alternate' type='text/html' href='https://git.fmsbw.de/sciteco/commit/?id=340f47ff2162865d93c4e4c47fec0c8584fe8743'/>
<id>340f47ff2162865d93c4e4c47fec0c8584fe8743</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>added EMCurses/Emscripten support</title>
<updated>2014-02-15T14:18:09+00:00</updated>
<author>
<name>Robin Haberkorn</name>
<email>robin.haberkorn@googlemail.com</email>
</author>
<published>2014-02-15T14:18:09+00:00</published>
<link rel='alternate' type='text/html' href='https://git.fmsbw.de/sciteco/commit/?id=6d4668bdaf393aa45d9adb640774f998c6b4aa58'/>
<id>6d4668bdaf393aa45d9adb640774f998c6b4aa58</id>
<content type='text'>
by building with Emscripten support, SciTECO may be
embedded into web pages.

 * sciteco.html is not a piece of documentation but a sample SciTECO embedding
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
by building with Emscripten support, SciTECO may be
embedded into web pages.

 * sciteco.html is not a piece of documentation but a sample SciTECO embedding
</pre>
</div>
</content>
</entry>
</feed>
