[Geany-Devel] [geany] document: show informational doc message after first reload (#672)

Matthew Brush mbrush at xxxxx
Sat Oct 31 19:07:44 UTC 2015

On 15-10-31 11:54 AM, Thomas Martitz wrote:
> Am 31.10.2015 um 18:59 schrieb Matthew Brush:
>> On 15-10-31 02:08 AM, Thomas Martitz wrote:
>>> Am 31. Oktober 2015 02:52:01 MEZ, schrieb Matthew Brush
>>> <notifications at github.com>:
>>>>> [...] so unless there are actual problems I don't see an evidence to
>>>> keep the off default.
>>>> I mentioned a number of issues with it in the mailing list thread
>>>> linked from the PR you made to disable it by default.
>>>> I don't think we should cram this in just because of string freeze,
>>>> especially with the open issues, the UI issues, and that we will be
>>>> releasing again in a few months. I'm not opposed to the feature, I'm
>>>> opposed to the implementation (re-using an existing feature to do
>>>> something else, something unexpected of the existing feature, as well
>>>> as the infobar without a checkbox that can be hidden from the user
>>>> without ever seeing it).
>>>> ---
>>>> Reply to this email directly or view it on GitHub:
>>>> https://github.com/geany/geany/pull/672#issuecomment-152685983
>>> Carrying this discussion to the ML.
>>> Can you elaborate on the issues you see?
>> Mostly the stuff I mentioned in the previous mailing list thread on
>> this subject. The semantics of the Reload feature have changed and no
>> longer does reload mean "drop everything about this file and load it
>> again" it means, "store another copy of this file in RAM and load it
>> again". I feel like it's not a good idea to re-use the File->Reload
>> feature like this, and under not uncommon scenarios, Geany is no
>> longer "lightweight" with respect to RAM usage.
> Reload barely means "replace the buffer with the current file's
> content", it's not connected to the undo history. And it still does that.

Semantically Reload should do exactly what Close and then Opening the 
file again would do. We've changed the meaning of an existing feature to 
do something different (replace text from current disk file).

> You can disable that feature. What's your problem?

I don't think it should be enabled by default.

>> To give an example, if someone opened a big log file and Reloads it,
>> or if they have many files from version control open and switch
>> branches, every reload will "leak" the size of each document worth of
>> memory, making Geany use much more RAM than before. Scintilla's undo
>> mechanism just isn't designed to efficiently handle the case of the
>> entire document being replaced. The only workaround to regain all the
>> memory wasted by Geany is to close all the files and start over.
> So you are concerned about very large files. I understand that. But
> that's really an edge case, and I don't feel that everybody else should
> suffer for edge cases. Especially not because Geany is an designed to be
> an editor, not a very-large-file viewer.

Large files or many files. If someone has a huge project with many files 
open and changes Git branches, then for each of the documents, each time 
this is done, it will store a copy of the document in memory.

> The various preferences are exactly for that, to make up for such edge
> cases.

The change is the edge case, the existing behaviour which has been in 
place for almost 10 years is the "normal" case. I agree this should be a 
various preference (or an edit action), I just don't think it should be 
enabled by default, changing the existing (common) meaning of Reload.

> BTW, I think we only store the undo on reload if the file has actually
> changed since it was opened. So for simply viewing dumps there shouldn't
> be an increased memory footprint:
>                  /* We only add an undo-reload action if the document
> has actually changed.
>                   * At the time of writing, this condition is moot
> because sci_set_text
>                   * generates an undo action even when the text hasn't
> really changed, so
>                   * actions_count is always greater than zero. In the
> future this might change.
>                   * It's arguable whether we should add an undo-reload
> action unconditionally,
>                   * especially since it's possible (if unlikely) that
> there had only
>                   * been "invisible" changes to the document, such as
> changes in encoding and
>                   * EOL mode, but for the time being that's how we roll. */

If that's the case, and we somehow tell if the file changed, then we 
shouldn't be prompting the user or anything either.

>> I think the new preference is fine, I just don't think it ought to be
>> enabled by default, or else it ought to be associated with a new
>> (Edit, not File) action altogether as opposed to changing the
>> semantics of the existing feature as everyone is used to.
>>> As to the UI. It's important that we get any UI for 1.26, therefore
>>> we had to manage before string freeze. [...]
>> Why is it important to rush it in before 1.26? One of the points of
>> the accelerated release cycle is so that people would stop wanting to
>> cram stuff in right before release. It's only a few months until next
>> release, so there's no need to keep trying to rush in controversial
>> stuff.
> The feature was targeted at 1.25 already. The feature itself hasn't
> changed (you didn't do anything to optimize it either). We simply
> created a UI to inform about it. It wasn't rushed either. The PR was
> open for more than two weeks and was ignored.

I raised these same issues already, but I guess nobody remembers (except 
the mailing list archive and Github comments). When I say rushed, I 
refer to your comment "String freeze is tomorrow so please merge" and 
the fact that I raised these issues on the PR and yet it was merged 
before I even had a chance to respond to the comments added.

Matthew Brush

More information about the Devel mailing list