Re: [Geany-devel] Separating session file lists from config (again)

2012-09-13 Thread Dimitar Zhekov
On Wed, 12 Sep 2012 11:35:48 +1000
Lex Trotman ele...@gmail.com wrote:

 [...]
  So what should geany.conf contain? If the interface preferences remain
  there, we still must rush at quit time to save it...
 
 Getting buried in specifics far too early, need to get the principles
 right first, but in general interface things that are changed
 rarely, like window layouts, would be in geany.conf,  things like
 search data is definitely session.  I'm sure there is more discussion
 here :)

Since it's an early discussion, I have a proposition for something I
always wanted to have in the other IDE-s: several sessions per project.

For example, currently I have one project for Geany sm, another for
regenerating my patches (the ones in sf patch tracker except sm, plus
some others), and I usually open another (temporary) project when
working on something else. Aside from the session, these projects are,
and must be, absolutely identical. So:

The project menu contains a Sessions item, which displays a dialog to 
add/remove/switch to a session.

Each new project starts with a Default session, which can not be
deleted.

Whoever prefers a project for each session can simply ignore Sessions.

Possible storage:

$project.geany contains an UUID.

$confdir/UUID contains a list of names sessions and the interface
options, including the current session name.

The larger a project, the more useful several sessions will be.

I'm not sure about several project-less sessions. It will be somewhat
confusing - should I use a project, or only a session? - but OTOH, the
line between projects and sessions will be drawn once and for all: a
project has it's own set of options, while a session is simply a set
of files.

RFC.

  (Note: the project files currectly contain the settings from Project -
  Properties and a session, but no interface options. The plugins can
  only place their own settings in the projects either, except by using
  the Project - Properties dialog.)
 
 Plugins access to the project files is another discussion.

They must be discussed at some later point, we have save-settings and
project-save.

-- 
E-gards: Jimmy
___
Geany-devel mailing list
Geany-devel@uvena.de
https://lists.uvena.de/cgi-bin/mailman/listinfo/geany-devel


Re: [Geany-devel] Separating session file lists from config (again)

2012-09-11 Thread Dimitar Zhekov
On Tue, 11 Sep 2012 09:17:52 +1000
Lex Trotman ele...@gmail.com wrote:

  All settings in Edit - Preferences and Project - Properties are
  saved ASA the dialog is confirmed. Some time ago, Build - Set Build
  Commands were modified to be saved immediately as well.
 
  The only settings that are really saved on exit are the interface
  ones (check/radio menu items, find/FIF settings etc.). The Preferences
  and Properties are still saved on exit, but only because nobody cared to
  separate them.
 
 The idea is that anything in geany.conf (or project.conf) would be
 saved on change.

So what should geany.conf contain? If the interface preferences remain
there, we still must rush at quit time to save it...

  2. Save session data periodically, or as it changes, or whenever,
  without touching the config/project files.  So the config isn't at
  risk if the session save goes wrong.

...and if we keep these preferences it in the .session file(s?), we risk
damaging them on some periodic save. Not so bad as losing geany.conf,
of course, but still unpleasant.

(  Would be nice, but saving the session only (without the settings)
  in the current files is completely possible.
 
 Sadly its not, keyfiles re-write the whole file, not just the bits
 that are changed.  So to save something by itself it has to be in
 another file.

I meant that loading a keyfile, replacing the session entries and saving
it is possible. But yes, that's irrelevant.)

  The proposal is that each project gets a UUID generated when it is
  created (or when its opened without one) which is saved in the project
  file.  This uuid is the name of the session file in the
  ${GEANY_CONFIG}/sessions directory. [...]
 
  The number of session files can be left to grow like weeds, or can be
  trimmed to a (configurable) maximum number deleting the oldest when
  needed.
 
  [...] So we are only speaking about the users that want the future
  settings-only project file [in VCS] but not the session.
 
 Yes, and I would expect that to be everyone who keeps a project file
 in *public* VCSes, nobody else in the world cares which files you had
 open last time you did something on the project.

If by public you mean somewhere in the internet, I haven't seen a
single OSS that includes with $project.geany, not even Geany itself or
geany plugins.

  Surely they can make a little effort to achieve that?..
 
 Clearly you are not one of them or havn't had to try to repair commits
 that have included extra files because you forgot to edit .gitignore
 or equivalent. :)

No, I use mostly svn. But removing file(s) from finished commits should
not be easy (and Mercurial does not even allow it IIRC). Yet how is
that our problem? And if it is, why should we even allow project files
in the project tree? They can be shipped by mistake equally well.

Moving the projects and sessions in ~/projects, ${GEANY_CONFIG}/projects
or wherever can somehow be justified. But having the projects here-or-
there, and the sessions yet somewhere else via redirection, is a mess.
It's a bit surprising that you, of all people, proposed such a thing.

  [...] The situation has improved a bit, now that Xfce will have
  proper sm, and handling the quit message under Win~1 is only a matter
  of somebody writing it (not me, I don't use Geany inder Win~1). I'm
  sure that MAC notifies the programs too, but have no idea how.
 
 The word *portable* still applies, but if you create
 dimitars_all_platform_window_management_library_including_osx_windows_gnome_and_unity
 then maybe :)

There are ~90 #if[n]def G_OS_WIN32 in Geany source. Expecting the
session save to be operating-system portable is a bit too much.

I have previously asked for somebody to check if SM works under GNOME3
and Unity, but there was no response.

  On Sun, 09 Sep 2012 21:50:02 -0700
  Matthew Brush mbr...@codebrainz.ca wrote:
 
   By session data I mean the list of currently open files and MRU list.
  
 
  I guess it could support some other stuff too like window/find dialogs
  geometry/position, active tab, position within the file, etc.

Just to clarify, stuff too like window/find dialogs means the
interface options. If they are per session file, each project will have
it's own appearance, something that Geany does not currently support.
(Except with SM, and I find it very useful.)

  But why stop half way? Let's have the current geany.conf/foo.geany
  for the Preferences and Properties respectively, a *.session file for
  the session and active tab [position within the file and the per-file
  settings are always stored along with the file name], and an *.interface
  file for the interface settings. This is the most logical solution,
  corresponding exactly to the different groups of settings. (Should I
  add a :) here? Hmmm...)
 
 
 What? Why not a file per setting, then it would all work fine.  Just
 make geany.conf a directory and switch to project.geany directories.
 :)

If we decide to continue with the single appearance 

Re: [Geany-devel] Signal Handling

2012-09-10 Thread Dimitar Zhekov
On Sun, 09 Sep 2012 19:41:19 -0700
Matthew Brush mbr...@codebrainz.ca wrote:

 On 12-09-09 05:23 PM, Lex Trotman wrote:
  [...]
  So can anyone describe a useful use-case for catching SIGTERM and
  potentially refusing to exit?  And also for SIGINT.
 

From what I see, signal_cb (used currently for SIGTERM only) looks like
a naive attempt to replace the session management. That will never work,
of course - either the WM will send a SIGKILL quickly (in 1-2 seconds),
or the entire X will terminate, killing Geany.

BTW, I'm happy to inform all Xfce users here that it's session
management was fixed and pushed to git, so we may expect it with the
next xfce-session versions. Using the Action Buttons plugin with
Shutdown or Restart will still not work, but that's a different bug. Or
maybe a feature, because the session settings specifically include the
text ... on logout.

 For SIGINT, if it's handled, it'll ask if you want to save unsaved 
 documents before closing when Ctrl+C is used from the terminal. Not 
 saying whether we should handle it or not, just that it's why my tests 
 included it.

My whole X terminates if I run it from a virtual console and press
Ctrl+C, so why should Geany handle the signal? Is this a normal
practice for the GUI programs under X than I'm not aware of?

And of course, the portability of signal(2) is so bad that only SIG_DFL
and SIG_IGN can be trusted.

-- 
E-gards: Jimmy
___
Geany-devel mailing list
Geany-devel@uvena.de
https://lists.uvena.de/cgi-bin/mailman/listinfo/geany-devel


Re: [Geany-devel] Separating session file lists from config (again)

2012-09-10 Thread Dimitar Zhekov
On Mon, 10 Sep 2012 14:36:32 +1000
Lex Trotman ele...@gmail.com wrote:

 Its about that time of year when we have our annual discussion on
 separating session data from config/project data :)

Let's not forget the multiply instances that share their configuration
to (some) extent. We love to discuss them. :)

 By session data I mean the list of currently open files and MRU list.
 
 The advantages (that I can see):
 
 1. Save config/project as its changed and not rushed at quit time (and
 the quit save doesn't happen in the absence of a working, portable,
 session management capability)

All settings in Edit - Preferences and Project - Properties are
saved ASA the dialog is confirmed. Some time ago, Build - Set Build
Commands were modified to be saved immediately as well.

The only settings that are really saved on exit are the interface
ones (check/radio menu items, find/FIF settings etc.). The Preferences
and Properties are still saved on exit, but only because nobody cared to
separate them. (There is more to it, but I don't want to start the
multiply instances discussion now.)

 2. Save session data periodically, or as it changes, or whenever,
 without touching the config/project files.  So the config isn't at
 risk if the session save goes wrong.

Would be nice, but saving the session only (without the settings) in
the current files is completely possible. In what situation saving the
session will damage Geany configuration, but saving the interface
sessings on exit will not?..

 The only disadvantage for user config (that I can see) is that it adds
 one file, say geany.session.conf alongside geany.conf
 
 For project sessions just using another file in the same place as the
 project file is more of a problem since project files can be in the
 project tree and some people like to save them in VCS.  So users would
 have to make sure that their git.ignore (or whatever the other VCSes
 use) is edited each time so that the session file isn't saved in the
 VCS.
 
 A better option, especially since sessions are inherently user
 related, is to store them in the user config location (or subdirectory
 thereof).  But how to link these files to the project files?
 
 The proposal is that each project gets a UUID generated when it is
 created (or when its opened without one) which is saved in the project
 file.  This uuid is the name of the session file in the
 ${GEANY_CONFIG}/sessions directory. [...]
 
 The number of session files can be left to grow like weeds, or can be
 trimmed to a (configurable) maximum number deleting the oldest when
 needed.

Oh c'mon. Is adding a file to git.ignore so serious problem that we
need to implement redirection and bother to control the list of
session files? The ignore in VCS-es is specifically _designed_ to
ignore files. The users that prefer to keep their foo.geany in the
project directory, but don't want them in the VCS, have already
exlcuded it. The ones that prefer to keep foo.geany in the VCS will not
ignore the .session file either. So we are only speaking about the ones
that want the future settings-only project file, but not the session.
Surely they can make a little effort to achieve that?..

 This proposal isn't about a proper session management capability,
 there isn't one that works on enough platforms to be worth including.

Unfortunately. The situation has improved a bit, now that Xfce will have
proper sm, and handling the quit message under Win~1 is only a matter
of somebody writing it (not me, I don't use Geany inder Win~1). I'm
sure that MAC notifies the programs too, but have no idea how.

On Sun, 09 Sep 2012 21:50:02 -0700
Matthew Brush mbr...@codebrainz.ca wrote:

  By session data I mean the list of currently open files and MRU list.
 
 
 I guess it could support some other stuff too like window/find dialogs 
 geometry/position, active tab, position within the file, etc.

So that with periodic save, in the situations that Lex will describe
(#2 above), not only the session, but your interface options will break
too. OTOH, geany.config and the project files will be very stable...

But why stop half way? Let's have the current geany.conf/foo.geany
for the Preferences and Properties respectively, a *.session file for
the session and active tab [position within the file and the per-file
settings are always stored along with the file name], and an *.interface
file for the interface settings. This is the most logical solution,
corresponding exactly to the different groups of settings. (Should I
add a :) here? Hmmm...)

-- 
E-gards: Jimmy
___
Geany-devel mailing list
Geany-devel@uvena.de
https://lists.uvena.de/cgi-bin/mailman/listinfo/geany-devel


Re: [Geany-devel] patch: separated session/local config

2012-08-07 Thread Dimitar Zhekov
On Sat, 4 Aug 2012 10:58:54 +1000
Lex Trotman ele...@gmail.com wrote:

 My problem isn't so much with the patch, it worked fine last time I
 had a working DE. [...] I expect lots of I turned it on for some
 DE and it didn't work but firefox, gedit, etc does, fix it waaa
 waaa waaa if we did that.

As a gtk+ application, Geany uses the legacy (X11R5) session protocol,
yet we are not receiving such messages. But of course, given the xsmp
support sutuation, your concern has merit.

Thanks to Eugene's initial implementation, the SM functionality can be
en/disabled with --enable-libsm=yes|no in configure or autogen. So I
changed the default to no in the latest patch (2012-08-07).

--

On Fri, 03 Aug 2012 18:14:40 -0700
Matthew Brush mbr...@codebrainz.ca wrote:

 If Dimitar doesn't mind working on the Git repo instead of keeping
 a sf.net patch tracker item up to date, I'd be +1 for that.

On Sat, 4 Aug 2012 11:47:55 +1000
Lex Trotman ele...@gmail.com wrote:

 So totally agree, Dimitar should be given rights to maintain this
 instead of the patch if he wants to.

That would have been very useful while while Eugene, and later me,
were developing the patch. But there are very little changes in the
latest two years, I have 3 other patches in the tracker, and another 3
on my machine for a plugin I'm writing... So it's easier for me to
regenerate all of them in the same way, and keep their previous
version(s) as .diff files, instead of dealing N branches. I changed
the latest tracker patches to .git to format though.

-- 
E-gards: Jimmy
___
Geany-devel mailing list
Geany-devel@uvena.de
https://lists.uvena.de/cgi-bin/mailman/listinfo/geany-devel


Re: [Geany-devel] patch: separated session/local config

2012-08-03 Thread Dimitar Zhekov
On Thu, 2 Aug 2012 10:57:22 +1000
Lex Trotman ele...@gmail.com wrote:

 3. Multiple instances would not benefit from having user session info
 saved separately unless we also switched to saving the remaining
 config immediately it was changed, not at shutdown.

View - Show Message Window - save configuration, Search - Find -
save configuration... hmmm.

 4. I have completely ignored session management since I am back on a
 DE where it doesn't work :)  That is the problem with session
 management, it only works on some DEs and how well it works varies.

Indeed. On that note, I'm happy to inform all Xfce users that the long
standing bug with asking for unsaved files on logout was fixed. It
doesn't seem like any dev noted, so I'll have to ring a few bells, and
hopefully get it for the next release.

 So I think we should keep Dimitars patch available for as long as he
 cares to maintain it so individual users can add it if they want, but
 the variability makes it inappropriate to commit to Geany.

Pretty much infinitely, Geany without sm would be a big downgrade to
me. I'm not going to support the git branch though, and it's already
out of date.

-- 
E-gards: Jimmy
___
Geany-devel mailing list
Geany-devel@uvena.de
https://lists.uvena.de/cgi-bin/mailman/listinfo/geany-devel


Re: [Geany-devel] patch: separated session/local config

2012-07-30 Thread Dimitar Zhekov
On Sat, 28 Jul 2012 18:16:03 +0300
Vladi Belperchinov-Shabanski c...@bis.bg wrote:

 I keep my ~/.config/geany dir under git so I can
 distribute my environment prefs on all machines 
 I use. unfortunately there are some config entries
 which always collide since they are local to the 
 current machine. [...]

If you are using Geany under *nix, with a GUI that supports sessions
(kde, xfce, maybe gnome), you can do the following:

1. Patch geany for x11 session management - see the patch tracker.

2. Don't Quit it, but logout (shutdown, restart) instead. The sm will
save your configuration in a separate .conf file.

3. Using Quit, or Edit - Preferences - OK / Apply, will save your
current settings in geany.conf - including the local ones.

Hope this can be somewhat useful to you.

--

On Mon, 30 Jul 2012 18:12:29 +0200
Colomban Wendling lists@herbesfolles.org wrote:

 However, maybe splitting session things out might help towards a
 better support for saving multiple instance configurations, and if we
 see that such changes would help on that subject too, the noise might be
 worth.  Dimitar, Eugene, Nick, Matthew, Lex..., thoughts?

The sm patch supports any number of separate instances, each with it's
own configuration.

Putting more settings into the project files will help - that's their
raison d'etre in the first place.

As of multiply instances that share their configuration to some(?)
extent, we had this discussion at least twice, and could not reach a
conclusion.

-- 
E-gards: Jimmy
___
Geany-devel mailing list
Geany-devel@uvena.de
https://lists.uvena.de/cgi-bin/mailman/listinfo/geany-devel


Re: [Geany-devel] About a new application icon.

2012-07-28 Thread Dimitar Zhekov
Forgot the attachment to my previous mail.

-- 
E-gards: Jimmy
attachment: icons.png___
Geany-devel mailing list
Geany-devel@uvena.de
https://lists.uvena.de/cgi-bin/mailman/listinfo/geany-devel


Re: [Geany-devel] Usability fix - saving tab state

2012-07-11 Thread Dimitar Zhekov
On Tue, 10 Jul 2012 23:09:42 +0300
Axel apeka1...@gmail.com wrote:

 You can have any number of primary and secondary Geany instances open.
 With simply calling configuration save, on restart you'll get *some*
 file list...
 
 Wait, wait. That's a *competely* different problem. You *can't* allow users
 to have multiple instances of application which all write to one config
 file.

We had several long discussions on this problem, with no conclusion
reached. Try multiply instances in the mailing list archives.

 If that list is from a secondary (-i) instance, it'll
 likely only contain a file or two, and you would be better with the
 list from the last normal Quit
 Well, it's a flaw - in the end, it's not much better or worse. How you
 can call Geany an IDE if it looses all the open files in all instances but
 the last closed one? Either it's a more like a code editor (i.e. Notepad++
 - limited to one instance) or it's like a serious IDE (i.e. VS or Eclipse),
 which, AFAIK store the separate file list for each project.

Geany stores separate file list for each project if you quit it
normally, or even for each running instance with session management.

A list autosave on open/close should check if a project is open and
save accordingly, which the patch does not do. It also seems to save
the list even if the open dialog is canceled.

-- 
E-gards: Jimmy
___
Geany-devel mailing list
Geany-devel@uvena.de
https://lists.uvena.de/cgi-bin/mailman/listinfo/geany-devel


Re: [Geany-devel] session management [was: Usability fix - saving tab state]

2012-07-11 Thread Dimitar Zhekov
On Tue, 10 Jul 2012 14:55:30 -0700
Matthew Brush mbr...@codebrainz.ca wrote:

 On Tue, 10 Jul 2012 21:20:55 +0300
 Dimitar Zhekov dimitar.zhe...@gmail.com wrote:
 
  There is a X11 session management patch on Geany sourceforge patch
  tracker. Applies against 1.22, but not the newest svn. Not guaranteed
  to work under GNOME, they always have problems with session support.
  Won't ask you to save any modified files under Xfce, xfsm is buggy too.
 
 So it only works in KDE and Unity? (and maybe TWM :)

KDE4 has prefect XSMP support, KDE3 was pretty good, don't know about
Unity. Xfce is OK if you don't have unsaved files.

 Shouldn't bugs be filed against these projects (if not done yet) if they 
 don't support the standard X/Linux session management?

https://bugzilla.xfce.org/show_bug.cgi?id=5379. The latest Xfce has
problems even with a single probram asking whether to save a modified
file, so I had to disable that part.

 AFAIK they all claim to try and support the various standards floating
 around out there.

As of the GNOME guys, they had a lousy support for the legacy (X11R5)
session support, dropped it AFAIK, and then deprecated XSMP in favour
their own session protocol in 2.24. Don't know about GNOME3.

Funny thing, considering that the small Xfce has full support for the
legacy protocol, and it's even supported by gtk+ - for example that's
how Devhelp or Firefox are restarted on login.

 I have no clue about SM, but it seems crazy that it cannot be 
 done. There must be apps out there that work properly cross-desktop, 
 maybe we can copy them?

gedit has the same problems with Xfce. Aside from the kde applications,
there are very few programs with full xsmp support.

 P.S. When logging out/shutting down, what order does it handle Geany 
 instances in? Does it always make sure the first opened instance is the 
 last to get handled so that you don't clobber the open files list for it 
 and stuff?

In no partilular order. Each instance saves it's own file list and
preferences in a separate .conf file, based on the instance xsmp ID.
Neither geany.conf nor the project files are saved - it works as if
you suspend/resume or hybernate/restore (with some exceptions).

You can of course do an Edit - Preferences - OK or Project -
Properties - OK, that'll save geany.conf or the project file
respectively. You can do that even after logout/login.

--

On Tue, 10 Jul 2012 21:59:35 -0700
Matthew Brush mbr...@codebrainz.ca wrote:

 I pushed it to a sm branch[1] on the git repo just now. I haven't 
 really tested it much but it builds and runs fine after a very trivial 
 fix of the Makefile (and wscript) files.

Yes, that's the part that normally breaks.

 It might get more usage/testing/experimenting in a branch on the main 
 repository compared to the sf.net tracker.

That may well be. Though while Geany was on svn, the patches were marked
with the svn release number, and thus very easy to apply, and there
were two or three svn-marked versions on the ML even before that...

The last notable changes were done two years ago. After that it's only
tweaking for specific SM-s, more strict xsmp support, which didn't
help (sigh), and updates various Geany changes.

-- 
E-gards: Jimmy
___
Geany-devel mailing list
Geany-devel@uvena.de
https://lists.uvena.de/cgi-bin/mailman/listinfo/geany-devel


Re: [Geany-devel] Remove MSYS dependency of Geany on Win~1

2012-07-10 Thread Dimitar Zhekov
On Tue, 10 Jul 2012 12:55:58 +0100
Nick Treleaven nick.trelea...@btinternet.com wrote:

  I've replaced xcopy with separate copy targets
  locally. Unfortunately that causes errors with subdirectories so I had
  to ignore them, which I'd prefer not to do. See attached diff.
 
  cp: omitting directory 'foo' errors on any subdirectories with GNU
  cp. [...]
 
 No, the subdir errors are with windows 'copy'.

Strange. Under Linux:

$ md /tmp/gx
$ cp doc/* /tmp/gx
$ cp doc/* ~/gx || echo some error
cp: omitting directory `doc/images'
some error

But the patch ignores any copy errors anyway, so it woudn't matter.

  for cmd: 'CP_R = xcopy /s /y /i'  and  'RM_R = del /s'
 
 xcopy /i doesn't seem to help here if the destination already exists (I 
 don't think we should remove $DESTDIR).

Yes, it works only for non-existing target directory.

I tested the patch with cmd.exe and tcc.exe, install and re-install.
All work fine, no copy error messages. On re-install, there are mkdir
error messages about existing directories, geany.glade is replaced
normally. That's with XP SP2 32-bit, MSYS was never installed.

-- 
E-gards: Jimmy
___
Geany-devel mailing list
Geany-devel@uvena.de
https://lists.uvena.de/cgi-bin/mailman/listinfo/geany-devel


Re: [Geany-devel] Remove MSYS dependency of Geany on Win~1

2012-07-09 Thread Dimitar Zhekov
On Sun, 08 Jul 2012 13:04:54 +0100
Nick Treleaven nick.trelea...@btinternet.com wrote:

 BTW I've run into 2 problems with the install target:
 
 1. cp -r and xcopy treat the destination path differently. Currently 
 MSYS install is broken and will install data files as 
 $DESTDIR/data/data/* - I've replaced xcopy with separate copy targets 
 locally. Unfortunately that causes errors with subdirectories so I had 
 to ignore them, which I'd prefer not to do. See attached diff.

cp: omitting directory 'foo' errors on any subdirectories with GNU
cp. Wait... the _only_ 'cp' we have under Win~1 GNU cp, right? Instead
of the patch, we can define CP_R as 'cp -r --remove-destination'. This
non-POSIX option exists since at least fileutils-4.1 from 2001. Well,
it'll remove $(DESTDIR)/data before copying, which I would prefer not
to do, but there shoudn't be any user files anyway.

 2. A weird problem. Installing from cmd.exe doesn't overwrite 
 geany.glade (and maybe some other files) even though it appears to 
 succeed. I only noticed this because I'm missing the View-Editor-Color 
 Schemes menu which was added about a month ago (I tend to test in place 
 rather than install each time).

OMG... Then we must choose between copy and xcopy depending on which one
works. Or we can define:

for cmd: 'CP_R = xcopy /s /y /i'  and  'RM_R = del /s'
for MSYS: 'CP_R = cp -r'  and  'RM_R = rm -r'

and replace the '-$(MKDIR) $(DESTDIR)/data' with '-$(RM_R)
$(DESTDIR)/data'.

That will (a) nullify the differences between 'cp -r' and 'xcopy /s',
(b) be a bit shorter than the individual MKDIR/CP commands from the
patch, and (c) fix the overriding problem, since the target files will
not exist - or maybe reveal something about the reason why it fails.

Well, we haven't run out of options yet. I'll test the patch tomorrow.

-- 
E-gards: Jimmy
___
Geany-devel mailing list
Geany-devel@uvena.de
https://lists.uvena.de/cgi-bin/mailman/listinfo/geany-devel


Re: [Geany-devel] Remove MSYS dependency of Geany on Win~1

2012-07-07 Thread Dimitar Zhekov
On Wed, 04 Jul 2012 12:59:11 +0100
Nick Treleaven nick.trelea...@btinternet.com wrote:

 On 28/06/2012 18:55, Dimitar Zhekov wrote:
 
 BTW if you think plugins$(DIRSEP)*.dll looks ugly, we can use:
 plugins$/*.dll

Nice. :) Though what I find a bit unpleasant is using the specific
separator for a single install command, not the particular syntax.

 This is what I intend to do.

Then why not put it for all install commands? We'll not depend on the
(undocumented AFAIK) behaviour of win~1 mkdir/copy/del to treat slash
as a directory separator in some cases, but not in others.

  'MAKE =' seems unneeded, any GNU make defines is automatically.

Sorry. Missed that.

  http://www.gnu.org/software/make/manual/html_node/Splitting-Lines.html
 
  (GNU)mingw32-make-3.82-5. Obviously treats \ different, since it's not
  an escape in C:\foo\bar. Anyway, STLIBS is a safe bet.
 
 Did you read the link? I'm talking about a backslash as the last 
 character on the line.

Yes. What I failed to read is:

http://www.gnu.org/software/make/manual/html_node/Wildcard-Pitfall.html#Wildcard-Pitfall

which seems to be the only mention that \ can be used for directory
separator. So I assumed that mingw32-make deviates from make.info,
and that may apply to trailing backslashes too.

-- 
E-gards: Jimmy
___
Geany-devel mailing list
Geany-devel@uvena.de
https://lists.uvena.de/cgi-bin/mailman/listinfo/geany-devel


Re: [Geany-devel] Remove MSYS dependency of Geany on Win~1

2012-06-28 Thread Dimitar Zhekov
On Thu, 28 Jun 2012 16:28:50 +0200
Thomas Martitz thomas.mart...@student.htw-berlin.de wrote:

 Am 28.06.2012 15:41, schrieb Nick Treleaven:
 
  And then perhaps use $(MAKE) CP=$(CP) RM=$(RM) to pass these 
  variables to the sub-makefiles so they don't need to have copies of 
  the ifdef. They only need CP and RM.
 
 Make variables are survive recursive invocations don't they?

Not that I know of. Do a ./configure or ./autoges, and look
at ./Makefile and src/Makefile.

-- 
E-gards: Jimmy
___
Geany-devel mailing list
Geany-devel@uvena.de
https://lists.uvena.de/cgi-bin/mailman/listinfo/geany-devel


Re: [Geany-devel] Remove MSYS dependency of Geany on Win~1

2012-06-28 Thread Dimitar Zhekov
On Thu, 28 Jun 2012 14:41:25 +0100
Nick Treleaven nick.trelea...@btinternet.com wrote:

 Yes, using a target for plugins only would be OK.

What if we put the an install: target in plugins/makefile.win32? That
works, needs no DIRSEP, and is very similar to the *nix installation.
To avoid 'C:/Program Files/Geany already exists' on the first install,
we will have to use mkdir -p, but that's the default behaviour of the
cmd/tcc mkdir anyway. Attached, and the patch is git-ified this time.

BTW (not included in the .diff):

'CP = copy' in doc/Makefile.win32 should be 'copy /Y'.
'MAKE =' seems unneeded, any GNU make defines is automatically.

But I'm thinking of adding a MSYS variable now to make it easier:
 
 -include localwin32.mk
 ifdef MSYS
 CP = cp
 CP_R = cp -r
 RM = rm
 DIRSEP = /
 endif

I thought of providing a sample localwin32.msys with the standard MSYS
definitions. In all cases, -include localwin32.mk should be the last,
to allow overriding.

 And then perhaps use $(MAKE) CP=$(CP) RM=$(RM) to pass these 
 variables to the sub-makefiles so they don't need to have copies of the 
 ifdef. They only need CP and RM.

Then all clean: targets will fail when run from a subdirectory (and the
above install: when run from plugins/). So 'make all' in src/ will work,
but not 'make clean'. Hmmm...

  I will. While unlikely, I'll check if 'xcopy /y plugins/*.dll ...'
  works.
 
 I tried that here and it failed.

Same here.

  I think because 'copy' takes /y switches the first path it sees must not
  use forward slashes. They are OK in the destination though.
 
  Or maybe the forward slashes work with copy if the argument matches an
  existing path exactly, without find first/next file involved. Not that
  knowing the reason will help us.
 
 No, even full paths with forward slash do not work (at least for the 
 first of the file arguments).

Same here. Gee.

  But it doesn't really run the SHELL, just attempts to CreateProcess
  (copy, ...) because a SHELL is defined. [...]
 
 It is weird that (without overriding on the command line) SHELL always 
 is sh.exe, even when cmd.exe is obviously being used. Maybe a MinGW 
 issue. It is as described in the manual, but why use cmd.exe then...

Well, there are 2 standard ways to run an executable-or-interpreter-
command under Win~1, and both are not very good. GNU make attempts to
do that better, going as far as supporting a list of the internal
CMD/4NT/TCC commands, and tries to support *nix shells at the same
time. The old GNU make version from UnxUtils.zip is the same, so it's
not exactly MinGW - more likely the 'stock' (non-MSYS, non-Cygwin) GNU
Make for Win~1.

  Also, I think you /can/ join command lines with a trailing backslash
  (but your patch change is still better to have STLIBS anyway):
  http://www.gnu.org/software/make/manual/html_node/Splitting-Lines.html
 
  It failed on my mingw32-make, I wound't have bothered if it worked.
 
 It seemed to work for me, and the manual seems to say that GNU make 
 interprets the trailing backslash, it doesn't pass it to the shell.
 
 I have GNU Make 3.82. YMMV.

(GNU)mingw32-make-3.82-5. Obviously treats \ different, since it's not
an escape in C:\foo\bar. Anyway, STLIBS is a safe bet.

-- 
E-gards: Jimmy
diff --git a/makefile.win32 b/makefile.win32
index 1add16c..4f701c9 100644
--- a/makefile.win32
+++ b/makefile.win32
@@ -10,7 +10,7 @@
 # Use localwin32.mk instead of editing variables as it is included in sub
 # makefiles.
 # E.g. use localwin32.mk to set PREFIX=C:/libs instead of the default C:\libs
-# For MSYS use localwin32.mk to set CP, CP_R, RM, DIRSEP.
+# For MSYS use localwin32.mk to set CP, CP_R, RM and MKDIR_P.
 # By default this should work in a Windows command prompt (cmd.exe).
 
 WINDRES = windres.exe
@@ -19,9 +19,7 @@ CXX = g++
 CP = copy /Y
 CP_R = xcopy /S /Y
 RM = del
-MKDIR = mkdir
-# strip is used to prevent line wrap
-DIRSEP := $(strip \)
+MKDIR_P = mkdir
 DESTDIR = C:/Program Files/Geany
 -include localwin32.mk
 
@@ -55,10 +53,8 @@ clean: deps
 # mkdir output is ignored in case dir exists
 # 'copy' seems to only accept / in the destination
 install:
-	-$(MKDIR) $(DESTDIR)
-	-$(MKDIR) $(DESTDIR)/bin
+	-$(MKDIR_P) $(DESTDIR)/bin
 	$(CP) geany.exe $(DESTDIR)/bin
-	-$(MKDIR) $(DESTDIR)/lib
-	$(CP) plugins$(DIRSEP)*.dll $(DESTDIR)/lib
-	-$(MKDIR) $(DESTDIR)/data
+	make -C plugins -f makefile.win32 install
+	-$(MKDIR_P) $(DESTDIR)/data
 	$(CP_R) data $(DESTDIR)/data
diff --git a/plugins/makefile.win32 b/plugins/makefile.win32
index 4f2e5da..435f6ae 100644
--- a/plugins/makefile.win32
+++ b/plugins/makefile.win32
@@ -3,7 +3,10 @@
 CC = gcc
 CXX = g++
 PREFIX = C:\libs
+CP = copy /Y
 RM = del
+MKDIR_P = mkdir
+DESTDIR = C:/Program Files/Geany
 -include ../localwin32.mk
 .SUFFIXES:
 .SUFFIXES: .c .o .dll
@@ -43,7 +46,7 @@ ifndef GTK210
 ALL_GTK_LIBS += -liconv
 endif
 
-.PHONY: all clean plugins
+.PHONY: all clean plugins install
 
 all: plugins
 
@@ -66,6 +69,10 @@ plugins: \
 clean:
 	-$(RM) deps.mak *.o 

Re: [Geany-devel] Remove MSYS dependency of Geany on Win~1

2012-06-27 Thread Dimitar Zhekov
On Tue, 26 Jun 2012 21:21:57 +0100
Nick Treleaven nick.trelea...@btinternet.com wrote:

 I can now apply the -b version, but I had to add 'src/' to the second 
 file in the diff - are you manually concatenating diffs?

Yes; the 2nd file lacked 'src/', sorry.

 Wouldn't it be better to use 'git diff'?

My Win~1 tools are very limited, git is not among them, and I didn't
dare to run a linux 'git diff' on an NTFS path.

 I still don't think separate targets is acceptable though. I can at 
 least apply the rest of the patch though.
 
  BTW you missed data/templates/files. Wouldn't using a single xcopy be
  more sensible to reduce bugs and maintenance?

Probably. I wanted to stick with a single CP for copying, but ended up
with something stupid.

 I've now committed to master an install target similar to your first 
 patch, but using xcopy for data. I used a DIRSEP variable:
 
 $(CP) plugins$(DIRSEP)*.dll $(DESTDIR)/lib

A make -C install-plugins will work without DIRSEP. Not ellegant, I'll
be the first to admit - but supporting a directory separator variable
specifically for a single command, when we can easily do without it,
doesn't seem very pretty to me either.

 Please test.

I will. While unlikely, I'll check if 'xcopy /y plugins/*.dll ...'
works.

 I think because 'copy' takes /y switches the first path it sees must not 
 use forward slashes. They are OK in the destination though.

Or maybe the forward slashes work with copy if the argument matches an
existing path exactly, without find first/next file involved. Not that
knowing the reason will help us.

--

  Note that using a cmd-style shell with SHELL defined to a *nix style
  shell fails, no matter if makefile.win32 is patched or not. That's a
  problem of GNU make under Win~1 trying to be too smart, and ending up
  with things like CreateProcess (copy, ...) error 2. :)
 
 I don't get the last part above, but I think this is by design:
 
 The program used as the shell is taken from the variable SHELL. If this 
 variable is not set in your makefile, the program /bin/sh is used as the 
 shell. [...]

But it doesn't really run the SHELL, just attempts to CreateProcess
(copy, ...) because a SHELL is defined. Anyway, I only wanted to make
it clear than in such (rare) configuration, mingw32-make is unlikely to
work at all: any cmd command (mkdir, del) will be started directly as
executable, and of course fail. xcopy should work though.

 Also, I think you /can/ join command lines with a trailing backslash 
 (but your patch change is still better to have STLIBS anyway):
 http://www.gnu.org/software/make/manual/html_node/Splitting-Lines.html

It failed on my mingw32-make, I wound't have bothered if it worked.

-- 
E-gards: Jimmy
___
Geany-devel mailing list
Geany-devel@uvena.de
https://lists.uvena.de/cgi-bin/mailman/listinfo/geany-devel


Re: [Geany-devel] Remove MSYS dependency of Geany on Win~1

2012-06-26 Thread Dimitar Zhekov
On Mon, 25 Jun 2012 13:52:12 -0700
Matthew Brush mbr...@codebrainz.ca wrote:

  C mingw32-make -f makefile.win32
  C mingw32-make -f makefile.win32 install
 
  Tested with mingw, cmd/tcc. Should work with MSYS make too... but I had
  to use backslashes in the install: target, and am not sure if/how MSYS
  make escapes them. Win~1 fully supports forward slashes internally, but
  the command interpreters have only partial support.
 
 
 Which command interpreters? AFAIK `cmd.exe` supports it fine, no?

Yes, cmd/tcc = cmd.exe or tcc.exe (the free take-command light).

 For anything on Windows, spaces in filenames is *really* likely :)

Well, the purpuse of this patch is to phase out MSYS. We can quote
the gtk+ path later...

 MSYS does treat backslashes as escapes, and I think that is a worse 
 problem than cmd.exe interpreting forward slashes as command options, as 
 it can occur in more situations. I think we should use forward slashes 
 throughout.

I expected something like that. OK, the -b version uses forward
slashes only. It's stupid and less efficient - not that it matters on
novadays machines. The command interpreters seem to tolerate forward
slashes for an exact-match path.

 Unfortunately I can't get your patch to apply against current Git, but 
 I'm not sure why (see attached file for errors). Can you/someone test if 
 it applies (maybe there's something weird happening on my Windows setup)?

The original patch had CR+LF line endings, the attached -a version
uses LF. But we should try -b anyway.

--

Note that using a cmd-style shell with SHELL defined to a *nix style
shell fails, no matter if makefile.win32 is patched or not. That's a
problem of GNU make under Win~1 trying to be too smart, and ending up
with things like CreateProcess (copy, ...) error 2. :)

-- 
E-gards: Jimmy
--- makefile.win32.orig	Fri Jun 01 00:28:27 2012
+++ makefile.win32	Tue Jun 26 11:18:24 2012
@@ -14,19 +14,18 @@
 WINDRES = windres.exe
 CC = gcc
 CXX = g++
-CP = copy
+MD = mkdir
+CP = copy /Y
 RM = del
-MAKE = make
+MAKE = mingw32-make
 -include localwin32.mk
 
-# Note:  is needed after cd because each line is executed in a different
-# shell. (cd .. is just for clarity).
 all: config.h
-	cd tagmanager/mio  $(MAKE) -f makefile.win32  cd ../..
-	cd tagmanager  $(MAKE) -f makefile.win32  cd ..
-	cd scintilla  $(MAKE) -f makefile.win32  cd ..
-	cd plugins  $(MAKE) -f makefile.win32  cd ..
-	cd src  $(MAKE) -f makefile.win32  cd ..
+	$(MAKE) -C tagmanager/mio -f makefile.win32
+	$(MAKE) -C tagmanager -f makefile.win32
+	$(MAKE) -C scintilla -f makefile.win32
+	$(MAKE) -C plugins -f makefile.win32
+	$(MAKE) -C src -f makefile.win32
 
 config.h: win32-config.h
 	$(CP) $ $@
@@ -39,17 +38,37 @@
 	-$(RM) geany_private.res geany.exe
 
 clean: deps
-	cd tagmanager/mio  $(MAKE) -f makefile.win32 clean  cd ../..
-	cd tagmanager  $(MAKE) -f makefile.win32 clean  cd ..
-	cd scintilla  $(MAKE) -f makefile.win32 clean  cd ..
-	cd plugins  $(MAKE) -f makefile.win32 clean  cd ..
-	cd src  $(MAKE) -f makefile.win32 clean  cd ..
+	$(MAKE) -C tagmanager/mio -f makefile.win32 clean
+	$(MAKE) -C tagmanager -f makefile.win32 clean
+	$(MAKE) -C scintilla -f makefile.win32 clean
+	$(MAKE) -C plugins -f makefile.win32 clean
+	$(MAKE) -C src -f makefile.win32 clean
+
+.PHONY: install install-plugins install-data install-colorschemes install-templates
+DESTDIR=C:/Program Files/Geany
+
+install-plugins:
+	-$(MD) $(DESTDIR)/lib
+	$(CP) *.dll $(DESTDIR)/lib
+
+install-data:
+	-$(MD) $(DESTDIR)/data
+	$(CP) *.* $(DESTDIR)/data
+
+install-colorschemes:
+	-$(MD) $(DESTDIR)/data/colorschemes
+	$(CP) *.* $(DESTDIR)/data/colorschemes
+
+install-templates:
+	-$(MD) $(DESTDIR)/data/templates
+	$(CP) *.* $(DESTDIR)/data/templates
 
-.PHONY: install
-DESTDIR='C:/Program Files/Geany'
-
-# requires admin privileges and MSYS
+# requires admin privileges
 install:
-	cp -r data $(DESTDIR)
-	cp plugins/*.dll $(DESTDIR)/lib
-	cp geany.exe $(DESTDIR)/bin
+	-$(MD) $(DESTDIR)
+	-$(MD) $(DESTDIR)/bin
+	$(CP) geany.exe $(DESTDIR)/bin
+	$(MAKE) -C plugins -f ../makefile.win32 install-plugins
+	$(MAKE) -C data -f ../makefile.win32 install-data
+	$(MAKE) -C data/colorschemes -f ../../makefile.win32 install-colorschemes
+	$(MAKE) -C data/templates -f ../../makefile.win32 install-templates
--- makefile.win32.orig	Fri Jun 01 00:28:27 2012
+++ makefile.win32	Tue Jun 26 09:46:52 2012
@@ -77,7 +77,7 @@
 # this calls parent clean-local target because del ../file won't work
 clean:
 	-$(RM) deps.mak *.o
-	cd ..  $(MAKE) -f makefile.win32 clean-local  cd src
+	$(MAKE) -C .. -f makefile.win32 clean-local
 
 exec:
 	$(EXECDIR)\geany.exe
@@ -85,10 +85,10 @@
 binclean:
 	$(RM) $(TARGET)
 
-$(TARGET): $(OBJS) $(RES) ../scintilla/scintilla.a ../tagmanager/mio/mio.a ../tagmanager/tagmanager.a
-	$(CXX) $(OBJS) $(RES) -o $(TARGET) \
-	../scintilla/scintilla.a ../tagmanager/tagmanager.a ../tagmanager/mio/mio.a \
-	$(ALL_GTK_LIBS) $(WIN_LIBS)
+STLIBS = ../scintilla/scintilla.a 

Re: [Geany-devel] Remove MSYS dependency of Geany on Win~1

2012-06-25 Thread Dimitar Zhekov
On Fri, 22 Jun 2012 13:08:22 -0700
Matthew Brush mbr...@codebrainz.ca wrote:

Hi. Here is a small diff (for makefile.win32 and src/makefile.win32
only) that makes Geany 1.22 Win~1 compilation and installation
independent of MSYS. Usage:

C mingw32-make -f makefile.win32
C mingw32-make -f makefile.win32 install

Tested with mingw, cmd/tcc. Should work with MSYS make too... but I had
to use backslashes in the install: target, and am not sure if/how MSYS
make escapes them. Win~1 fully supports forward slashes internally, but
the command interpreters have only partial support.

 Also, on the topic of improving the win32 makefiles, we should make sure 
 that all paths are quoted because IIRC last time I tried to use them, 
 stuff like this[1] made it blow up when my PREFIX was (for example), 
 `C:/Documents and Settings/...` (ie. spaces in the filename).

All install: destination paths, yes. About the others - will anyone put
gtk+ under C:\Documents and Settings, or something like that?

The truth to be said, all paths should be quoted under all OS-es, but
nobody does that unless a path with spaces is really likely.

-- 
E-gards: Jimmy
--- ./makefile.win32.orig	2012-06-01 00:28:27.0 +0300
+++ ./makefile.win32	2012-06-25 22:06:49.93750 +0300
@@ -14,19 +14,18 @@
 WINDRES = windres.exe
 CC = gcc
 CXX = g++
-CP = copy
+MD = mkdir
+CP = copy /Y
 RM = del
-MAKE = make
+MAKE = mingw32-make
 -include localwin32.mk
 
-# Note:  is needed after cd because each line is executed in a different
-# shell. (cd .. is just for clarity).
 all: config.h
-	cd tagmanager/mio  $(MAKE) -f makefile.win32  cd ../..
-	cd tagmanager  $(MAKE) -f makefile.win32  cd ..
-	cd scintilla  $(MAKE) -f makefile.win32  cd ..
-	cd plugins  $(MAKE) -f makefile.win32  cd ..
-	cd src  $(MAKE) -f makefile.win32  cd ..
+	$(MAKE) -C tagmanager/mio -f makefile.win32
+	$(MAKE) -C tagmanager -f makefile.win32
+	$(MAKE) -C scintilla -f makefile.win32
+	$(MAKE) -C plugins -f makefile.win32
+	$(MAKE) -C src -f makefile.win32
 
 config.h: win32-config.h
 	$(CP) $ $@
@@ -39,17 +38,25 @@
 	-$(RM) geany_private.res geany.exe
 
 clean: deps
-	cd tagmanager/mio  $(MAKE) -f makefile.win32 clean  cd ../..
-	cd tagmanager  $(MAKE) -f makefile.win32 clean  cd ..
-	cd scintilla  $(MAKE) -f makefile.win32 clean  cd ..
-	cd plugins  $(MAKE) -f makefile.win32 clean  cd ..
-	cd src  $(MAKE) -f makefile.win32 clean  cd ..
+	$(MAKE) -C tagmanager/mio -f makefile.win32 clean
+	$(MAKE) -C tagmanager -f makefile.win32 clean
+	$(MAKE) -C scintilla -f makefile.win32 clean
+	$(MAKE) -C plugins -f makefile.win32 clean
+	$(MAKE) -C src -f makefile.win32 clean
 
 .PHONY: install
-DESTDIR='C:/Program Files/Geany'
+DESTDIR=C:\Program Files\Geany
 
-# requires admin privileges and MSYS
+# requires admin privileges
 install:
-	cp -r data $(DESTDIR)
-	cp plugins/*.dll $(DESTDIR)/lib
-	cp geany.exe $(DESTDIR)/bin
+	-$(MD) $(DESTDIR)
+	-$(MD) $(DESTDIR)\bin
+	$(CP) geany.exe $(DESTDIR)\bin
+	-$(MD) $(DESTDIR)\lib
+	$(CP) plugins\*.dll $(DESTDIR)\lib
+	-$(MD) $(DESTDIR)\data
+	$(CP) data $(DESTDIR)\data
+	-$(MD) $(DESTDIR)\data\colorschemes
+	$(CP) data\colorschemes $(DESTDIR)\data\colorschemes
+	-$(MD) $(DESTDIR)\data\templates
+	$(CP) data\templates $(DESTDIR)\data\templates
--- ./src/makefile.win32.orig	2012-06-01 00:28:27.0 +0300
+++ ./src/makefile.win32	2012-06-25 21:54:32.03125 +0300
@@ -77,7 +77,7 @@
 # this calls parent clean-local target because del ../file won't work
 clean:
 	-$(RM) deps.mak *.o
-	cd ..  $(MAKE) -f makefile.win32 clean-local  cd src
+	$(MAKE) -C .. -f makefile.win32 clean-local
 
 exec:
 	$(EXECDIR)\geany.exe
@@ -85,10 +85,10 @@
 binclean:
 	$(RM) $(TARGET)
 
-$(TARGET): $(OBJS) $(RES) ../scintilla/scintilla.a ../tagmanager/mio/mio.a ../tagmanager/tagmanager.a
-	$(CXX) $(OBJS) $(RES) -o $(TARGET) \
-	../scintilla/scintilla.a ../tagmanager/tagmanager.a ../tagmanager/mio/mio.a \
-	$(ALL_GTK_LIBS) $(WIN_LIBS)
+STLIBS = ../scintilla/scintilla.a ../tagmanager/tagmanager.a ../tagmanager/mio/mio.a
+
+$(TARGET): $(OBJS) $(RES) $(STLIBS)
+	$(CXX) $(OBJS) $(RES) -o $(TARGET) $(STLIBS) $(ALL_GTK_LIBS) $(WIN_LIBS)
 
 deps.mak:
 	$(CC) -MM  $(CFLAGS) *.c deps.mak
___
Geany-devel mailing list
Geany-devel@uvena.de
https://lists.uvena.de/cgi-bin/mailman/listinfo/geany-devel


Re: [Geany-devel] Remove MSYS dependency of Geany on Win~1

2012-06-22 Thread Dimitar Zhekov
On Fri, 22 Jun 2012 17:23:26 +0100
Nick Treleaven nick.trelea...@btinternet.com wrote:

  $(MAKE) -C foo -f makefile.win32
 
 OK.
 
  Linking does not work, because the stock make supports \ only for
  variables, not commands. But that's even easier to fix: [...]
 
 OK.
 
  There is also some inconsistency: CP = copy, but cp -r and cp at
  the end of makefile. The install target can be rewritten as several
  -$(MD) and non-recursive $(CP) commands, and no MSYS will be required.
 
 Sigh. Is there no equivalent of 'cp -r' on Windows?

XCOPY can be used. But since we only have the data/ directory with two
subdirectories, a COPY is fine too.

  RFC. If we consider this worthy, I can make the required changes.
 
 Sounds good.

I'll probably make the changes in Monday.

 On 20/06/2012 19:04, Dimitar Zhekov wrote:
   That looks like an entirely new makefile. I was able to compile Geany
   with small (msys compatible) changes in the existing makefiles, and
   setting MAKE to mingw32-make in localwin32.mk...
 
 Yes, probably we should set MAKE=mingw32-make instead of 'make'.

If we don't need MSYS, and there aren't any advantages in using it for 
compiling and installing Geany, mingw32-make should be the default.

-- 
E-gards: Jimmy
___
Geany-devel mailing list
Geany-devel@uvena.de
https://lists.uvena.de/cgi-bin/mailman/listinfo/geany-devel


Re: [Geany-devel] Remove MSYS dependency of Geany on Win~1

2012-06-20 Thread Dimitar Zhekov
On Tue, 19 Jun 2012 14:25:11 -0700
Matthew Brush mbr...@codebrainz.ca wrote:

 On 12-06-19 10:12 AM, Dimitar Zhekov wrote:
  Hi,
 
  Now that 1.22 is out, how about removing the MSYS build dependency
  under Win~1? I tried to compile Geany with the default MinGW make,
  without any MSYS, and there were some easily fixable problems: [...]
 
 
 I have started working on this before:
 https://gist.github.com/1494603
 
 It builds but isn't perfect, like it doesn't do the icon/resource stuff, 
 and doesn't use win32-conf.h properly, but it might be useful for a 
 starting point. It's what I use for testing Geany on Windows.

That looks like an entirely new makefile. I was able to compile Geany
with small (msys compatible) changes in the existing makefiles, and
setting MAKE to mingw32-make in localwin32.mk...

-- 
E-gards: Jimmy
___
Geany-devel mailing list
Geany-devel@uvena.de
https://lists.uvena.de/cgi-bin/mailman/listinfo/geany-devel


[Geany-devel] Remove MSYS dependency of Geany on Win~1

2012-06-19 Thread Dimitar Zhekov
Hi,

Now that 1.22 is out, how about removing the MSYS build dependency
under Win~1? I tried to compile Geany with the default MinGW make,
without any MSYS, and there were some easily fixable problems:

cd foo  $(MAKE) -f makefile.win32  cd ..\..

does not work, probably requires some sh. But if we depend on GNU make
(which seems to be the case, since we're using ifdef/else/endif), it's
easier and shorter to:

$(MAKE) -C foo -f makefile.win32


Linking does not work, because the stock make supports \ only for
variables, not commands. But that's even easier to fix:

STLIBS
= ../scintilla/scintilla.a ../tagmanager/tagmanager.a ../tagmanager/mio/mio.a

$(TARGET): $(OBJS) $(RES) $(STLIBS)
$(CXX) $(OBJS) $(RES) -o $(TARGET) $(STLIBS) $(ALL_GTK_LIBS)
$(WIN_LIBS)

with the added benefit that static library names are not repeated
literally.


There is also some inconsistency: CP = copy, but cp -r and cp at
the end of makefile. The install target can be rewritten as several
-$(MD) and non-recursive $(CP) commands, and no MSYS will be required.


RFC. If we consider this worthy, I can make the required changes.

-- 
E-gards: Jimmy
___
Geany-devel mailing list
Geany-devel@uvena.de
https://lists.uvena.de/cgi-bin/mailman/listinfo/geany-devel


Re: [Geany-devel] Geany multicursors patch

2012-05-24 Thread Dimitar Zhekov
On Thu, 24 May 2012 10:52:29 +1000
Lex Trotman ele...@gmail.com wrote:

 As I said above we should change the deviant Geany ctrl+click behavior
 so the super isn't necessary.

+1. The current Ctrl+Click goes to definition, or to maching brace, or
starts rectangular selection on missing definition, or does nothing on
missing matching brace - very annoying.

-- 
E-gards: Jimmy
___
Geany-devel mailing list
Geany-devel@uvena.de
https://lists.uvena.de/cgi-bin/mailman/listinfo/geany-devel


Re: [Geany-devel] Geany multicursors patch

2012-05-21 Thread Dimitar Zhekov
On Sun, 20 May 2012 12:30:12 +0200
Davide Andreoli d...@gurumeditation.it wrote:

 Hi all!

Hi.

 I implemented this in editor.c (and not as an external plugin) because I
 have plans to also extend the snippets to support multi editing.
 
 Actually the patch is really simple but is just a first test, it is not
 ready as there are 3 open issue:
 
 1. do you like the feature? :)

Yes, but would prefer it as a plugin. Extending it to snippets, well...
doesn't seem useful to me.

 2. atm the multimode end when you press up/down/left/righti don't like
 it too much, some other idea?

Prefferably on the same events that cancel the rectangle multi line
character insertion.

 3. is there a way to really show multiple carets?

No easy way AFAIK.

If you position the cursor on the first of several lines with leading
tabs, switch to overwrite and mark the tabs as rectangle, there will be
several cursors, each with tab width. So scintilla is actually pretty
capable - if you want to get your hands dirty, open it's sources and
see how it's done.

 note: this is my first geany patch... plese be kind :P

:)

-- 
E-gards: Jimmy
___
Geany-devel mailing list
Geany-devel@uvena.de
https://lists.uvena.de/cgi-bin/mailman/listinfo/geany-devel


Re: [Geany-devel] gtk_separator_tool_item_new() patch

2012-05-12 Thread Dimitar Zhekov
Hi,

I looked into plugin toolbar support code in more detail, and there
seem to be three simple ways to fix the item order:

1. Apply the current patch and tell the plugin authors to add/remove
their items at once. They are likely to do so in the first place,
because mixed adding/removing means one must keep track of the items,
to be able to remove them on plugin_cleanup. It's easier to add
everything at once, show/hide as needed, and remove at once. A not
shown / hidden item is just as good as not added / removed item.

2. Add an item_count to GeanyAutoSeparator. We already have the means
required to track items, but ref_count is for show/hide. Having item
count has the advantage of being able to destroy autosep-widget when
it drops to 0. ref_count should be renamed to show_count or something.

3. Add a hidden separator item after autosep and always insert before
it. Will work like the current positioning, except the 1st item will be
OK. May be easier/simpler to implement than #2, but I don't like it.

Related to #1, note that mixed removing of items, too, is not supported
well by Geany - if you destroy a never shown / hidden item, ref_count
will be decremented anyway and autosep may be hidden even if visible
items exist.

--

On Wed, 09 May 2012 00:19:15 +0200
Colomban Wendling lists@herbesfolles.org wrote:

 def get_insert_position(plugin):
 [...]

 def add_item(plugin, item):
 [...]

It will work, of course, but I think the above are simpler.

-- 
E-gards: Jimmy
___
Geany-devel mailing list
Geany-devel@uvena.de
https://lists.uvena.de/cgi-bin/mailman/listinfo/geany-devel


Re: [Geany-devel] gtk_separator_tool_item_new() patch

2012-05-11 Thread Dimitar Zhekov
On Wed, 09 May 2012 00:19:15 +0200
Colomban Wendling lists@herbesfolles.org wrote:

 Le 29/04/2012 20:26, Dimitar Zhekov a écrit :
  
  Actually there is 1/2 error. The plugin toolbar items are inserted
  improperly, but added to plugin_items list in the right order. So
  using Customize Toolbar and adding/removing items or otherwise
  changing them fixes the order.
  
  Patch attached. Not in git format, sorry.
 
 If I read the thing correctly, the patch is wrong because it would
 possibly mixup tool items from different plugins if they aren't added at
 the same time, wouldn't it?

Yes. But Geany does not really support mixed add order: the items are
put in toolbar.c's plugin_items exactly in their add_toolbar_item order,
so a recreation of the toolbar will mix them if not added at once.

BTW, I placed a git patch in tracker bug item 3522755.

 But you're right that there is a problem.  Currently, it creates:
 
 | Plugin_1_Item_2 Plugin_1_Item_1 | Plugin_2_Item_1 | Quit

It creates Plugin_1_Item_2..N | Plugin_1_Item_1 for each plugin, so:

Plugin_1_Item_2 | Plugin_1_Item_1 | Plugin_2_Item_1 | Quit

And for 2 plugins and 2 items:

Plugin_1_Item_2 | Plugin_1_Item_1 Plugin_2_Item_2 | Plugin_2_Item_1 |
Quit.

 However with your patch, if plugins are added in the order
 Plugin_1_Item_1, Plugin_2_Item_1, Plugin_1_Item_2, it would give:
 
 | Plugin_1_Item_1 | Plugin_2_Item_1 Plugin_1_Item_2 | Quit
 
 Which is also wrong (more wrong if I could say).

With the patch, we have a proper order if the plugins add their 2+
items at once, and that order matches toolbar.c plugin_items.

With the current code, the order of 2+ items is always wrong. They are
kept together, allright, unless the toolbar is rebuilt, but the
separators are wrong too.

-- 
E-gards: Jimmy
___
Geany-devel mailing list
Geany-devel@uvena.de
https://lists.uvena.de/cgi-bin/mailman/listinfo/geany-devel


[Geany-devel] plugin data / html doc directories?

2012-05-05 Thread Dimitar Zhekov
Hi,

In which directories should a plugin keep it's read-only data files and
html documentation - datadir|docdir/plugins/name? Currently only
lua uses one of those, as datadir/geany-plugins/geanylua,
but /usr/local/share/geany/geany-plugins is inconsistent with
~/.config/geany/plugins.

BTW, the description of plugin_help() refers to utils_start_browser(),
but the function name is utils_open_browser().

-- 
E-gards: Jimmy
___
Geany-devel mailing list
Geany-devel@uvena.de
https://lists.uvena.de/cgi-bin/mailman/listinfo/geany-devel


Re: [Geany-devel] [PATCH] : FIx window position on start up.

2012-05-04 Thread Dimitar Zhekov
On Thu, 3 May 2012 21:30:46 +1000
Erik de Castro Lopo mle+to...@mega-nerd.com wrote:

  The included patch checks the window position read from the preferences
  file, checks to see if its off either the right hand side or bottom
  of the screen and moves it back into a sensible position.
 
 Anyone have any comments on this patch? Yeah? Nay? You look silly and
 I hate you?

I don't think it's a very good idea.

First, you switched from your large monitor to the small one, and
Geany was repositioned. Next time you log in from the large monitor,
it won't be in the lower right corner, and you'll have to move it
there. Tit for tat, unless you somehow to maintain real (screen) and
virtual (.conf) positions.

Second, what's to stop a window manager for using coordinates outside
the screen for fullscreen, or even for maximizing? For example border 4,
x1 = -4, width = 1288.

Third, the problem - if we consider it one - affects all GUI programs,
which strongly suggests that it's a window manager's job, if anybody's,
to fix such coordinates.

Fourth, I'm not sure how this will work for X11 session managed Geany,
sm setups the window position differently.

Last but not least, why not write a small plugin, and attach the
repositioning to geany-startup-complete?.. You don't really need to
check prefs.save_winpos - if part of the main window is outside the
screen, just move it. The main window is accessible from a plugin, and
so are gtk_window_* and gdk_screen_*.

-- 
E-gards: Jimmy
___
Geany-devel mailing list
Geany-devel@uvena.de
https://lists.uvena.de/cgi-bin/mailman/listinfo/geany-devel


[Geany-devel] plugin_add_toolbar_item()

2012-04-29 Thread Dimitar Zhekov
Hi,

According to it's description, $subject Inserts a toolbar item before
the Quit button, or after the previous plugin toolbar item. A separator
is added on the first call to this function [...].

In reality, they are added like this: b c d e f | a Quit.

Looking at $subject source, it's obvious that the 2nd and subsequent
items are inserted before the separator created with the 1st item.

There are two ways to fix this:

Keep item counter, and insert the 2nd+ items at separator_position +
counter + 1; we must count the removals as well.

Always insert before Quit, which will reduce plugin_add_toolbar_item
by about 1/3.

Practically the two are identical, but the latter is much simpler. If
you agree to it, I'll write a patch.

Currently $subject is used by 4 plugins; they all add a single item.

-- 
E-gards: Jimmy
___
Geany-devel mailing list
Geany-devel@uvena.de
https://lists.uvena.de/cgi-bin/mailman/listinfo/geany-devel


[Geany-devel] plugin_add_toolbar_item() was my mistake

2012-04-29 Thread Dimitar Zhekov
Hi,

Actually, plugin_add_toolbar_item() works properly.

Now, if there isn't enough space, the first item(s?) are placed in the
drop-down toolbar menu, instead of the last.
But that's probably a gtk+ thing.

-- 
E-gards: Jimmy
___
Geany-devel mailing list
Geany-devel@uvena.de
https://lists.uvena.de/cgi-bin/mailman/listinfo/geany-devel


[Geany-devel] gtk_separator_tool_item_new() patch

2012-04-29 Thread Dimitar Zhekov
Hi again, and excuse me for stuffing the list.

Actually there is 1/2 error. The plugin toolbar items are inserted
improperly, but added to plugin_items list in the right order. So
using Customize Toolbar and adding/removing items or otherwise
changing them fixes the order.

Patch attached. Not in git format, sorry.

-- 
E-gards: Jimmy
--- ./src/pluginutils.c.orig	2011-10-15 19:28:57.0 +0300
+++ ./src/pluginutils.c	2012-04-29 21:17:36.685006711 +0300
@@ -47,7 +47,7 @@
 void plugin_add_toolbar_item(GeanyPlugin *plugin, GtkToolItem *item)
 {
 	GtkToolbar *toolbar = GTK_TOOLBAR(main_widgets.toolbar);
-	gint pos;
+	gint pos = toolbar_get_insert_position();
 	GeanyAutoSeparator *autosep;
 
 	g_return_if_fail(plugin);
@@ -55,26 +55,15 @@
 
 	if (!autosep-widget)
 	{
-		GtkToolItem *sep;
+		GtkToolItem *sep = gtk_separator_tool_item_new();
 
-		pos = toolbar_get_insert_position();
-
-		sep = gtk_separator_tool_item_new();
-		gtk_toolbar_insert(toolbar, sep, pos);
+		gtk_toolbar_insert(toolbar, sep, pos++);
 		autosep-widget = GTK_WIDGET(sep);
-
-		gtk_toolbar_insert(toolbar, item, pos + 1);
-
 		toolbar_item_ref(sep);
-		toolbar_item_ref(item);
-	}
-	else
-	{
-		pos = gtk_toolbar_get_item_index(toolbar, GTK_TOOL_ITEM(autosep-widget));
-		g_return_if_fail(pos = 0);
-		gtk_toolbar_insert(toolbar, item, pos);
-		toolbar_item_ref(item);
 	}
+
+	gtk_toolbar_insert(toolbar, item, pos);
+	toolbar_item_ref(item);
 	/* hide the separator widget if there are no toolbar items showing for the plugin */
 	ui_auto_separator_add_ref(autosep, GTK_WIDGET(item));
 }
___
Geany-devel mailing list
Geany-devel@uvena.de
https://lists.uvena.de/cgi-bin/mailman/listinfo/geany-devel


Re: [Geany-devel] Small additions to stash

2012-04-06 Thread Dimitar Zhekov
On Fri, 06 Apr 2012 14:06:48 +0100
Nick Treleaven nick.trelea...@btinternet.com wrote:

 On 05/04/2012 19:02, Dimitar Zhekov wrote:
  New stash_group_free_strings(), which frees any strings and string
  arrays in a group. Much easier than to track them individually, as
  in Geany (though if someone is willing to track the keyfile_groups
  prefs free-s and remove them, a call may be included in
  configuration_finalize).
  
Probably it should be named more generally, in case we support e.g.
null-terminated integer lists. Maybe stash_group_free_settings().
  Renamed and changed the description. Updated patch attached.
 
 Thanks, applied. I added a note to the docs that it's not called by 
 stash_group_free().
 
 Ideally we would be using the function in Geany somewhere as an example.

Perhaps on the plugins group, since it's short and contains both string
(freed in main?..) and string vector. Would require a static variable.

-- 
E-gards: Jimmy
___
Geany-devel mailing list
Geany-devel@uvena.de
https://lists.uvena.de/cgi-bin/mailman/listinfo/geany-devel


Re: [Geany-devel] Small additions to stash

2012-04-05 Thread Dimitar Zhekov
On Thu, 05 Apr 2012 17:20:44 +0100
Nick Treleaven nick.trelea...@btinternet.com wrote:

 On 04/04/2012 19:58, Dimitar Zhekov wrote:
  Hi,
 
  How about some $subject? Namely:
 
  Include stash_group_set_use_defaults() in plugin StashFuncs. I'm not
  using it any more, but it's a nice thing to have.
 
 I'm not convinced we should support that publicly. It puts a burden on 
 the implementation for an unusual use case.

ACK.

  New stash_group_free_strings(), which frees any strings and string
  arrays in a group. Much easier than to track them individually, as
  in Geany (though if someone is willing to track the keyfile_groups
  prefs free-s and remove them, a call may be included in
  configuration_finalize).
 
 Probably it should be named more generally, in case we support e.g. 
 null-terminated integer lists. Maybe stash_group_free_settings().

Renamed and changed the description. Updated patch attached.

-- 
E-gards: Jimmy
From b86a3942379cbca63d11ad4120239db4615f13d0 Mon Sep 17 00:00:00 2001
From: Dimitar Zhekov dimitar.zhe...@gmail.com
Date: Thu, 5 Apr 2012 20:59:57 +0300
Subject: [PATCH] A stash_group_free_settings() function Frees the memory
 allocated for setting values in a group

---
 plugins/geanyfunctions.h |2 ++
 src/plugindata.h |1 +
 src/plugins.c|3 ++-
 src/stash.c  |   21 +
 src/stash.h  |2 ++
 5 files changed, 28 insertions(+), 1 deletions(-)

diff --git a/plugins/geanyfunctions.h b/plugins/geanyfunctions.h
index d41d77e..beaf6fb 100644
--- a/plugins/geanyfunctions.h
+++ b/plugins/geanyfunctions.h
@@ -418,6 +418,8 @@
 	geany_functions-p_stash-stash_group_display
 #define stash_group_update \
 	geany_functions-p_stash-stash_group_update
+#define stash_group_free_settings \
+	geany_functions-p_stash-stash_group_free_settings
 #define symbols_get_context_separator \
 	geany_functions-p_symbols-symbols_get_context_separator
 #define build_activate_menu_item \
diff --git a/src/plugindata.h b/src/plugindata.h
index 77d6964..9e5e7f5 100644
--- a/src/plugindata.h
+++ b/src/plugindata.h
@@ -701,6 +701,7 @@ typedef struct StashFuncs
 			const gchar *property_name, GType type);
 	void (*stash_group_display)(struct StashGroup *group, GtkWidget *owner);
 	void (*stash_group_update)(struct StashGroup *group, GtkWidget *owner);
+	void (*stash_group_free_settings)(struct StashGroup *group);
 }
 StashFuncs;
 
diff --git a/src/plugins.c b/src/plugins.c
index 42bec5d..65b229f 100644
--- a/src/plugins.c
+++ b/src/plugins.c
@@ -346,7 +346,8 @@ static StashFuncs stash_funcs = {
 	stash_group_add_entry,
 	stash_group_add_widget_property,
 	stash_group_display,
-	stash_group_update
+	stash_group_update,
+	stash_group_free_settings
 };
 
 static SymbolsFuncs symbols_funcs = {
diff --git a/src/stash.c b/src/stash.c
index 0427af3..530c11e 100644
--- a/src/stash.c
+++ b/src/stash.c
@@ -335,6 +335,27 @@ StashGroup *stash_group_new(const gchar *name)
 }
 
 
+/** Frees the memory allocated for setting values in a group.
+ * @param group . */
+void stash_group_free_settings(StashGroup *group)
+{
+	StashPref *entry;
+	guint i;
+
+	foreach_ptr_array(entry, i, group-entries)
+	{
+		if (entry-setting_type == G_TYPE_STRING)
+			g_free(*(gchararray *) entry-setting);
+		else if (entry-setting_type == G_TYPE_STRV)
+			g_strfreev(*(gchararray **) entry-setting);
+		else
+			continue;
+
+		*(gpointer**) entry-setting = NULL;
+	}
+}
+
+
 /** Frees a group.
  * @param group . */
 void stash_group_free(StashGroup *group)
diff --git a/src/stash.h b/src/stash.h
index 949fb2d..7391e71 100644
--- a/src/stash.h
+++ b/src/stash.h
@@ -60,6 +60,8 @@ gboolean stash_group_load_from_file(StashGroup *group, const gchar *filename);
 gint stash_group_save_to_file(StashGroup *group, const gchar *filename,
 		GKeyFileFlags flags);
 
+void stash_group_free_settings(StashGroup *group);
+
 void stash_group_free(StashGroup *group);
 
 
-- 
1.7.9.1

___
Geany-devel mailing list
Geany-devel@uvena.de
https://lists.uvena.de/cgi-bin/mailman/listinfo/geany-devel


[Geany-devel] Small additions to stash

2012-04-04 Thread Dimitar Zhekov
Hi,

How about some $subject? Namely:

Include stash_group_set_use_defaults() in plugin StashFuncs. I'm not
using it any more, but it's a nice thing to have.

New stash_group_free_strings(), which frees any strings and string
arrays in a group. Much easier than to track them individually, as
in Geany (though if someone is willing to track the keyfile_groups
prefs free-s and remove them, a call may be included in
configuration_finalize).

-- 
E-gards: Jimmy
From 83e14b46a117e9920e514ead6bc0adaf8330abb6 Mon Sep 17 00:00:00 2001
From: Dimitar Zhekov dimitar.zhe...@gmail.com
Date: Wed, 4 Apr 2012 21:38:51 +0300
Subject: [PATCH] include stash_group_set_use_defaults() in plugin StashFuncs
 new stash_group_free_strings(), also in plugin StashFuncs

---
 plugins/geanyfunctions.h |4 
 src/plugindata.h |2 ++
 src/plugins.c|4 +++-
 src/stash.c  |   21 +
 src/stash.h  |2 ++
 5 files changed, 32 insertions(+), 1 deletions(-)

diff --git a/plugins/geanyfunctions.h b/plugins/geanyfunctions.h
index d41d77e..3f66707 100644
--- a/plugins/geanyfunctions.h
+++ b/plugins/geanyfunctions.h
@@ -418,6 +418,10 @@
 	geany_functions-p_stash-stash_group_display
 #define stash_group_update \
 	geany_functions-p_stash-stash_group_update
+#define stash_group_set_use_defaults \
+	geany_functions-p_stash-stash_group_set_use_defaults
+#define stash_group_free_strings \
+	geany_functions-p_stash-stash_group_free_strings
 #define symbols_get_context_separator \
 	geany_functions-p_symbols-symbols_get_context_separator
 #define build_activate_menu_item \
diff --git a/src/plugindata.h b/src/plugindata.h
index 77d6964..2df8ffc 100644
--- a/src/plugindata.h
+++ b/src/plugindata.h
@@ -701,6 +701,8 @@ typedef struct StashFuncs
 			const gchar *property_name, GType type);
 	void (*stash_group_display)(struct StashGroup *group, GtkWidget *owner);
 	void (*stash_group_update)(struct StashGroup *group, GtkWidget *owner);
+	void (*stash_group_set_use_defaults)(struct StashGroup *group, gboolean use_defaults);
+	void (*stash_group_free_strings)(struct StashGroup *group);
 }
 StashFuncs;
 
diff --git a/src/plugins.c b/src/plugins.c
index 42bec5d..4d36169 100644
--- a/src/plugins.c
+++ b/src/plugins.c
@@ -346,7 +346,9 @@ static StashFuncs stash_funcs = {
 	stash_group_add_entry,
 	stash_group_add_widget_property,
 	stash_group_display,
-	stash_group_update
+	stash_group_update,
+	stash_group_set_use_defaults,
+	stash_group_free_strings
 };
 
 static SymbolsFuncs symbols_funcs = {
diff --git a/src/stash.c b/src/stash.c
index 0427af3..76411d4 100644
--- a/src/stash.c
+++ b/src/stash.c
@@ -335,6 +335,27 @@ StashGroup *stash_group_new(const gchar *name)
 }
 
 
+/** Frees the strings and string arrays in a group.
+ * @param group . */
+void stash_group_free_strings(StashGroup *group)
+{
+	StashPref *entry;
+	guint i;
+
+	foreach_ptr_array(entry, i, group-entries)
+	{
+		if (entry-setting_type == G_TYPE_STRING)
+			g_free(*(gchararray *) entry-setting);
+		else if (entry-setting_type == G_TYPE_STRV)
+			g_strfreev(*(gchararray **) entry-setting);
+		else
+			continue;
+
+		*(gpointer**) entry-setting = NULL;
+	}
+}
+
+
 /** Frees a group.
  * @param group . */
 void stash_group_free(StashGroup *group)
diff --git a/src/stash.h b/src/stash.h
index 949fb2d..64b723d 100644
--- a/src/stash.h
+++ b/src/stash.h
@@ -60,6 +60,8 @@ gboolean stash_group_load_from_file(StashGroup *group, const gchar *filename);
 gint stash_group_save_to_file(StashGroup *group, const gchar *filename,
 		GKeyFileFlags flags);
 
+void stash_group_free_strings(StashGroup *group);
+
 void stash_group_free(StashGroup *group);
 
 
-- 
1.7.9.1

___
Geany-devel mailing list
Geany-devel@uvena.de
https://lists.uvena.de/cgi-bin/mailman/listinfo/geany-devel


Re: [Geany-devel] Markers

2012-03-12 Thread Dimitar Zhekov
On Mon, 12 Mar 2012 09:59:45 +1100
Lex Trotman ele...@gmail.com wrote:

 Maybe you should contact Matthew, during a conversation we had on IRC
 he revealed a prototype for manageing all such limited resources, not
 just markers, in a consistent manner.

This concerns all plugin developers. @Matthew, can you public the
prototype or it's short description on the mailing list, or on another
shared resource?..

 I wouldn't expect (for example) GeanyLatex to interfere with my C#
 programming.  Similarly I wouldn't expect the debugger plugin to try
 to work on a language gdb doesn't understand, eg Java.

Sounds nice. But for some reason, both Scintilla and Geany use fixed
resources, independent of file type. Folding for text files, anyone?..

A per-document allocation, no matter how implemented, also introduces
per-document resource exhaustion errors. So we should at least have a
policy how such error messages are displayed - they must be both
noticable and not too annoying.

-- 
E-gards: Jimmy
___
Geany-devel mailing list
Geany-devel@uvena.de
https://lists.uvena.de/cgi-bin/mailman/listinfo/geany-devel


Re: [Geany-devel] Markers

2012-03-11 Thread Dimitar Zhekov
On Sun, 11 Mar 2012 12:33:07 +1100
Lex Trotman ele...@gmail.com wrote:

 I don't think much is needed:
 
 1. Scintilla already provides the special symbol SC_MARK_AVAILABLE to
 indicate that the mark is available.

I already replied to this [1]. Unless we want each plugin to allocate
it's markers for each document, possibly receiving different numbers,
we should have a bitmap in Geany.

 3. When a plugin needs a marker for a document it should search for
 one that is available on that document and use that, and set it back
 to available when it no longer needs it and on unload.  There are only
 32 to search so it isn't IMHO worth implementing anything faster.

Oh, I see. So any plugin with markers must keep track of each document
it allocated markers in. This is not going to be fun.

 why should
 a C language plugin steal markers froma Python file when the Python
 plugin also needs them??

To be able to allocate markers #s in plugin_init(), and free them in
plugin_cleanup(). To be able to work without tracking document file
type changes.

[1]
http://lists.uvena.de/pipermail/geany-devel/2012-February/006629.html

-- 
E-gards: Jimmy
___
Geany-devel mailing list
Geany-devel@uvena.de
https://lists.uvena.de/cgi-bin/mailman/listinfo/geany-devel


Re: [Geany-devel] Markers

2012-03-10 Thread Dimitar Zhekov
On Sat, 10 Mar 2012 17:43:16 +0400
Alexander Petukhov de...@apetukhov.ru wrote:

  utils_ui_get_marker(), utils_ui_free_marker().
 
 Is it going with these new functions?

Nothing is going on, the thread died.

 I started with SF bug about markers and also came up to that having
 such functions would be the best way for dealing with plugin's markers.

Fellow developers, how about implementing these?
I can do it, they are not hard to write.

-- 
E-gards: Jimmy
___
Geany-devel mailing list
Geany-devel@uvena.de
https://lists.uvena.de/cgi-bin/mailman/listinfo/geany-devel


[Geany-devel] small leak in keyfile.c

2012-03-08 Thread Dimitar Zhekov
Hi,

configuration_reload_default_session() does not free configfile.
Patch attached.

-- 
E-gards: Jimmy
From 3d30dfbc23c26928ab98950ed6cc89b8eb48e898 Mon Sep 17 00:00:00 2001
From: Dimitar Zhekov dimitar.zhe...@gmail.com
Date: Thu, 8 Mar 2012 18:53:23 +0200
Subject: [PATCH] free configfile in configuration_reload_default_session

---
 src/keyfile.c |3 ++-
 1 files changed, 2 insertions(+), 1 deletions(-)

diff --git a/src/keyfile.c b/src/keyfile.c
index ddb2d62..49367b6 100644
--- a/src/keyfile.c
+++ b/src/keyfile.c
@@ -978,10 +978,11 @@ void configuration_save_default_session(void)
  */
 void configuration_reload_default_session(void)
 {
-	const gchar *configfile = g_build_filename(app-configdir, geany.conf, NULL);
+	gchar *configfile = g_build_filename(app-configdir, geany.conf, NULL);
 	GKeyFile *config = g_key_file_new();
 
 	g_key_file_load_from_file(config, configfile, G_KEY_FILE_NONE, NULL);
+	g_free(configfile);
 
 	configuration_load_session_files(config, FALSE);
 
-- 
1.7.9.1

___
Geany-devel mailing list
Geany-devel@uvena.de
https://lists.uvena.de/cgi-bin/mailman/listinfo/geany-devel


Re: [Geany-devel] Markers

2012-02-27 Thread Dimitar Zhekov
On Mon, 27 Feb 2012 08:23:41 +1100
Lex Trotman ele...@gmail.com wrote:

 [...]
  My personal preference would be some shared static function that
  any plugin using markers could access.
 
  A simple ui_utils function to find and return the first available
  marker based on SC_MARK_AVAILABLE would suffice.
 
 The absolute minimum we need is for Geany to set unused markers to
 available.  Geany has to do this, it is the only thing *guaranteed* to
 run before all plugins.

Fraser #2 states this, but it won't be enough. In fact, it may be useful
only for programs with a single SciObj, such as SciTE.

 It is not clear to me if it has to be done for each scintilla buffer,
 each view or once only.

For each buffer (each SciObj), I guarantee...

 Plugins or Geany can then simply search for the next available one.
 and allocate it by setting it to something other than available.

Since a plugin may not need to set [all of] it's markers for each file,
and we may even have 0 buffers open, a guint map seems required, and I
was probably wrong to suggest AVAILABLE. Can't query/define Scintilla
markers without at least 1 SciObj...

 Since every mark using plugin should do it it is probably better to
 have a common function in Geany.

utils_ui_get_marker(), utils_ui_free_marker().

 It can then also generate a message
 to the user suggesting unloading a plugin if it runs out of markers.

Shoudn't the plugin handle this? It may reduce the number of markers
used, work without them if non-critical, or do something else.

 Bookmarks should also be re-written to only use the number of markers
 as current bookmarks, not grab ten at startup.

Ten markers? Wow, that's heavy. Different colors or what?

-- 
E-gards: Jimmy
___
Geany-devel mailing list
Geany-devel@uvena.de
https://lists.uvena.de/cgi-bin/mailman/listinfo/geany-devel


Re: [Geany-devel] Markers

2012-02-26 Thread Dimitar Zhekov
On Sun, 26 Feb 2012 13:08:14 +
WILLIAM FRASER william.fra...@virgin.net wrote:

 There is a problem as I understand it with checking for the
 SC_MARK_AVAILABLE marker to see if a marker is available...
 
 Markers seem by default to be set to 0 (SC_MARK_CIRCLE) by scintilla.

By default, all 32 markers are set to SC_MARK_CIRCLE with a black
foreground and a white background.

 2) change scintilla or geany so that markers are set to SC_MARK_AVAILABLE
 when it is initialised.

Applications may use the marker symbol SC_MARK_AVAILABLE to indicate
that plugins may allocate that marker number.

So AVAILABLE is specifically designed for our case, and it's Geany that
should be changed, not scintilla.

 Option 2 would be the most versatile in the long run, but would require
 altering someone else's project purely for our own devices, and it would
 require anyone using a plugin using markers to have to use the latest
 version of geany.

The old plugins may continue to use their fixed marker numbers, which
will show as allocated [1] . They won't deallocate the numbers on
_cleanup, but will allocate the same numbers if reloaded.

[1] Unless somebody uses a marker without defining it. White circle
with black background, anyone?..

 My personal preference would be some shared static function that any plugin
 using markers could access.

A simple ui_utils function to find and return the first available
marker based on SC_MARK_AVAILABLE would suffice.

-- 
E-gards: Jimmy
___
Geany-devel mailing list
Geany-devel@uvena.de
https://lists.uvena.de/cgi-bin/mailman/listinfo/geany-devel


[Geany-devel] project-before-save signal

2012-02-23 Thread Dimitar Zhekov
Hi,

I want to request a $subject, executed unconditionally on project
save after config is loaded but before the actual save (similar to
configuration-save). It'll serve the following purposes:

1. Let a plugin undo any temporary project / file setting changes it
possibly did, before the save takes place.

2. Allow saving project settings which are not part of the project
dialog. The current signal, project-save, is executed only on
Project Dialog - OK / Apply, but not when a project is closed, and
consequently not on Geany quit.

3. Allow saving plugin project settings on project close (and Geany
quit) to an empty file, for example project-x11-session-id.geany -
same problem as #2.

The code is attached, courtesy of Jiří Techet, and works fine.

--

Now, #2 and #3 may be solved by making project-save unconditional,
but that will break compatibility. #1 can be done by g_key_file_get/
set with the config argument of project-save, provided it's
unconditional, but I'd prefer to use a documented plugin interface
instead of opening the bag of tricks.

-- 
E-gards: Jimmy
From 1da771871d8250ee84c16bc4639391c34d991820 Mon Sep 17 00:00:00 2001
From: Dimitar Zhekov dimitar.zhe...@gmail.com
Date: Thu, 23 Feb 2012 20:14:35 +0200
Subject: [PATCH] project-before-save signal

---
 doc/pluginsignals.c |2 ++
 src/geanyobject.c   |9 +
 src/geanyobject.h   |2 ++
 src/project.c   |2 ++
 4 files changed, 15 insertions(+), 0 deletions(-)

diff --git a/doc/pluginsignals.c b/doc/pluginsignals.c
index 0447fb1..1f41012 100644
--- a/doc/pluginsignals.c
+++ b/doc/pluginsignals.c
@@ -140,6 +140,8 @@ signal void (*document_close)(GObject *obj, GeanyDocument *doc, gpointer user_da
  */
 signal void (*project_open)(GObject *obj, GKeyFile *config, gpointer user_data);
 
+signal void (*project_before_save)(GObject *obj, GKeyFile *config, gpointer user_data);
+
 /** Sent when a project is saved(happens when the project is created, the properties
  *  dialog is closed or Geany is exited). This signal is emitted shortly before Geany
  *  will write the contents of the GKeyFile to the disc.
diff --git a/src/geanyobject.c b/src/geanyobject.c
index 23e8af0..bb25ea3 100644
--- a/src/geanyobject.c
+++ b/src/geanyobject.c
@@ -252,6 +252,15 @@ static void create_signals(GObjectClass *g_object_class)
 		g_cclosure_marshal_VOID__POINTER,
 		G_TYPE_NONE, 1,
 		G_TYPE_POINTER);
+	geany_object_signals[GCB_PROJECT_BEFORE_SAVE] = g_signal_new (
+		project-before-save,
+		G_OBJECT_CLASS_TYPE (g_object_class),
+		G_SIGNAL_RUN_FIRST,
+		G_STRUCT_OFFSET (GeanyObjectClass, project_before_save),
+		NULL, NULL,
+		g_cclosure_marshal_VOID__POINTER,
+		G_TYPE_NONE, 1,
+		G_TYPE_POINTER);
 	geany_object_signals[GCB_PROJECT_SAVE] = g_signal_new (
 		project-save,
 		G_OBJECT_CLASS_TYPE (g_object_class),
diff --git a/src/geanyobject.h b/src/geanyobject.h
index 3957b55..e7a652d 100644
--- a/src/geanyobject.h
+++ b/src/geanyobject.h
@@ -39,6 +39,7 @@ typedef enum
 	GCB_DOCUMENT_ACTIVATE,
 	GCB_DOCUMENT_CLOSE,
 	GCB_PROJECT_OPEN,
+	GCB_PROJECT_BEFORE_SAVE,
 	GCB_PROJECT_SAVE,
 	GCB_PROJECT_CLOSE,
 	GCB_PROJECT_DIALOG_CREATE,
@@ -88,6 +89,7 @@ struct _GeanyObjectClass
 	void (*document_activate)(GeanyDocument *doc);
 	void (*document_close)(GeanyDocument *doc);
 	void (*project_open)(GKeyFile *keyfile);
+	void (*project_before_save)(GKeyFile *keyfile);
 	void (*project_save)(GKeyFile *keyfile);
 	void (*project_close)(void);
 	void (*project_dialog_create)(GtkWidget *notebook);
diff --git a/src/project.c b/src/project.c
index ca2bc12..b06c2c3 100644
--- a/src/project.c
+++ b/src/project.c
@@ -1041,6 +1041,8 @@ static gboolean write_config(gboolean emit_signal)
 	filename = utils_get_locale_from_utf8(p-file_name);
 	g_key_file_load_from_file(config, filename, G_KEY_FILE_NONE, NULL);
 
+	g_signal_emit_by_name(geany_object, project-before-save, config);
+
 	foreach_slist(node, stash_groups)
 		stash_group_save_to_key_file(node-data, config);
 
-- 
1.7.9

___
Geany-devel mailing list
Geany-devel@uvena.de
https://lists.uvena.de/cgi-bin/mailman/listinfo/geany-devel


Re: [Geany-devel] Empty project properties dialog

2012-02-22 Thread Dimitar Zhekov
On Tue, 21 Feb 2012 23:25:02 +0100
Jiří Techet tec...@gmail.com wrote:

 Hi Dimitar,
 
 have a look at the attached patch - I've added the signal but as I
 don't know exactly when you need to emit it, you'll probably need to
 modify it. Also I haven't documented the signal as I still don't
 completely understand its purpose. Feel free to use this patch as a
 template for the modifications you need to do.

Thanks!

-- 
E-gards: Jimmy
___
Geany-devel mailing list
Geany-devel@uvena.de
https://lists.uvena.de/cgi-bin/mailman/listinfo/geany-devel


Re: [Geany-devel] Some obsolete(?) bug reports

2012-02-21 Thread Dimitar Zhekov
On Mon, 20 Feb 2012 21:00:44 +0100
Colomban Wendling lists@herbesfolles.org wrote:

 To run a second instance of Geany, do not specify any filenames on
 the command-line, [...]
 
 This should be reworded since it's not true since a long time one
 need explicit -i, isn't it?  Or do I get the sentence wrong?

Well, maybe secondary instead of second, since I used subsequent
in the previous paragraph.

-i is required only if you want to open CL files in a new instance,
instead of passing them to an already running one (explained under
Command line options before Startup). If you have a Geany, and
start another from, say, your DE menu (i.e. without CL), it becomes
(new instance) automatically.

-- 
E-gards: Jimmy
___
Geany-devel mailing list
Geany-devel@uvena.de
https://lists.uvena.de/cgi-bin/mailman/listinfo/geany-devel


Re: [Geany-devel] Empty project properties dialog

2012-02-21 Thread Dimitar Zhekov
On Mon, 20 Feb 2012 22:40:50 +0100
Jiří Techet tec...@gmail.com wrote:

 On Mon, Feb 20, 2012 at 17:51, Dimitar Zhekov dimitar.zhe...@gmail.com 
 wrote:
 
  Since you are changing the project signals anyway, can you do me a
  favor and add an unconditional project-before-save signal in
  write_config, with the same arguments as project-save?
 
  Currently we have document-before-save, and save-settings is before
  configuration saving (though that's not very helpful), but there's
  no before signal for the projects settings, and I need one for a
  plugin of mine.
 
 Hi Dimitar,
 
 what do you need the signal for? The project-save signal is actually
 emitted before g_key_file_to_data() is called so it is called before
 it's saved. I use this signal in my plugin too to add my own settings
 to the project file.

To (a) temporarily revert some file settings before a possible save-
session-files and (b) ignore emit_signal, since session save does not
depend on it.

-- 
E-gards: Jimmy
___
Geany-devel mailing list
Geany-devel@uvena.de
https://lists.uvena.de/cgi-bin/mailman/listinfo/geany-devel


[Geany-devel] gtk builder signals for plugin

2012-02-21 Thread Dimitar Zhekov
Hi,

Does anyone know if the gtk builder searching for exported functions
and attaching them to xml/.glade signals will work for a plugin?

-- 
E-gards: Jimmy
___
Geany-devel mailing list
Geany-devel@uvena.de
https://lists.uvena.de/cgi-bin/mailman/listinfo/geany-devel


Re: [Geany-devel] Empty project properties dialog

2012-02-20 Thread Dimitar Zhekov
Hi, Jiří,

On Mon, 20 Feb 2012 00:35:24 +0100
Jiří Techet tec...@gmail.com wrote:

 I've created new pull request with the changes here:
 
 https://github.com/geany/geany/pull/25

Since you are changing the project signals anyway, can you do me a
favor and add an unconditional project-before-save signal in
write_config, with the same arguments as project-save?

Currently we have document-before-save, and save-settings is before
configuration saving (though that's not very helpful), but there's
no before signal for the projects settings, and I need one for a
plugin of mine.

-- 
E-gards: Jimmy
___
Geany-devel mailing list
Geany-devel@uvena.de
https://lists.uvena.de/cgi-bin/mailman/listinfo/geany-devel


Re: [Geany-devel] Some obsolete(?) bug reports

2012-02-20 Thread Dimitar Zhekov
On Sat, 18 Feb 2012 14:17:17 +0100
Colomban Wendling lists@herbesfolles.org wrote:

 So I'd say aye to Dimitar since he gently volunteered :)  Moreover
 if it is a preference I don't see any loss; but I'd better see this
 preference turned on by default for new configurations if the restore
 session one is on.

Here's the patch. There is no additional preference - if Load files
from the last session is checked, they are loaded, and that's it.
Though it'll be easy to make it a pref...

-- 
E-gards: Jimmy
From 23a085bbf5210572bce051649a0e73f4c5d0bbe3 Mon Sep 17 00:00:00 2001
From: Dimitar Zhekov dimitar.zhe...@gmail.com
Date: Mon, 20 Feb 2012 19:18:21 +0200
Subject: [PATCH] Load the default session even if opening file(s)

A slightly simplified variant of the rewritten load startup files
from Geany patch tracker. Does not check for CLI files when deciding
whether to load the default session.
---
 src/main.c |   60 ++--
 1 files changed, 30 insertions(+), 30 deletions(-)

diff --git a/src/main.c b/src/main.c
index d17cfba..88034e9 100644
--- a/src/main.c
+++ b/src/main.c
@@ -798,12 +798,10 @@ gboolean main_handle_filename(const gchar *locale_filename)
 
 
 /* open files from command line */
-static gboolean open_cl_files(gint argc, gchar **argv)
+static void open_cl_files(gint argc, gchar **argv)
 {
 	gint i;
 
-	if (argc = 1) return FALSE;
-
 	for (i = 1; i  argc; i++)
 	{
 		gchar *filename = main_get_argv_filename(argv[i]);
@@ -828,7 +826,6 @@ static gboolean open_cl_files(gint argc, gchar **argv)
 		}
 		g_free(filename);
 	}
-	return TRUE;
 }
 
 
@@ -882,39 +879,42 @@ void main_load_project_from_command_line(const gchar *locale_filename, gboolean
 
 static void load_startup_files(gint argc, gchar **argv)
 {
-	gboolean load_project_from_cl = FALSE;
-
-	/* ATM when opening a project file any other filenames are ignored */
-	load_project_from_cl = (argc  1)  g_str_has_suffix(argv[1], .geany);
-	if (load_project_from_cl  argc  2)
-		g_print(Ignoring extra filenames after %s, argv[1]);
+	gboolean load_session = FALSE;
 
-	if (load_project_from_cl || ! open_cl_files(argc, argv))
+	if (argc  1  g_str_has_suffix(argv[1], .geany))
 	{
-		if (prefs.load_session)
-		{
-			if (load_project_from_cl)
-			{
-main_load_project_from_command_line(argv[1], FALSE);
-			}
-			else if (cl_options.load_session  !cl_options.new_instance)
-load_session_project_file();
+		/* project file specified: load it, but decide the session later */
+		main_load_project_from_command_line(argv[1], FALSE);
+		argc--, argv++;
+		/* force session load if using project-based session files */
+		load_session = project_prefs.project_session;
+	}
 
-			/* when we want a new instance, we still load project session files unless -s
-			 * was passed */
-			if (!cl_options.load_session || (!load_project_from_cl  cl_options.new_instance))
-return;
+	/* Load the default session if:
+	 * 1. Load files from the last session is active.
+	 * 2. --no-session is not specified.
+	 * 3. We are a primary instance.
+	 * Has no effect if a CL project is loaded and using project-based session files. */
+	if (prefs.load_session  cl_options.load_session  !cl_options.new_instance)
+	{
+		if (app-project == NULL)
+			load_session_project_file();
+		load_session = TRUE;
+	}
 
-			/* load session files into tabs, as they are found in the session_files variable */
-			configuration_open_files();
+	if (load_session)
+	{
+		/* load session files into tabs, as they are found in the session_files variable */
+		configuration_open_files();
 
-			if (gtk_notebook_get_n_pages(GTK_NOTEBOOK(main_widgets.notebook)) == 0)
-			{
-ui_update_popup_copy_items(NULL);
-ui_update_popup_reundo_items(NULL);
-			}
+		if (gtk_notebook_get_n_pages(GTK_NOTEBOOK(main_widgets.notebook)) == 0)
+		{
+			ui_update_popup_copy_items(NULL);
+			ui_update_popup_reundo_items(NULL);
 		}
 	}
+
+	open_cl_files(argc, argv);
 }
 
 
-- 
1.7.9

___
Geany-devel mailing list
Geany-devel@uvena.de
https://lists.uvena.de/cgi-bin/mailman/listinfo/geany-devel


Re: [Geany-devel] Some obsolete(?) bug reports

2012-02-20 Thread Dimitar Zhekov
On Mon, 20 Feb 2012 20:00:38 +0100
Colomban Wendling lists@herbesfolles.org wrote:

 Thanks a lot, committed.  Maybe an update of the manual to explain
 more it needed?

Yes... An update is required because the manual explicitly says if
you specify CL files, only they will be opened, and refers the user
to Recent files. So I altered the Startup section a bit.

-- 
E-gards: Jimmy
From 97d8f12958e0a2924b3fb557b01195320e1a9323 Mon Sep 17 00:00:00 2001
From: Dimitar Zhekov dimitar.zhe...@gmail.com
Date: Mon, 20 Feb 2012 21:20:48 +0200
Subject: [PATCH] altered Geany manual Startup to reflect that the default
 session is loaded even if opening file(s)

---
 doc/geany.txt |   18 +-
 1 files changed, 9 insertions(+), 9 deletions(-)

diff --git a/doc/geany.txt b/doc/geany.txt
index 6cefa87..89b20cc 100644
--- a/doc/geany.txt
+++ b/doc/geany.txt
@@ -424,17 +424,17 @@ Startup
 
 At startup, Geany loads all files from the last time Geany was
 launched. You can disable this feature in the preferences dialog
-(see `General Startup preferences`_). If you specify some
-files on the command line, only these files will be opened, but you
-can find the files from the last session in the file menu under the
-Recent files item. By default this contains the last 10 recently
-opened files. You can change the number of recently opened files in
-the preferences dialog.
+(see `General Startup preferences`_).
 
 You can start several instances of Geany, but only the first will
-load files from the last session. To run a second instance of Geany,
-do not specify any filenames on the command-line, or disable opening
-files in a running instance using the appropriate command line option.
+load files from the last session. In the subsequent instances, you
+can find these files in the file menu under the Recent files item.
+By default this contains the last 10 recently opened files. You can
+change the number of recently opened files in the preferences dialog.
+
+To run a second instance of Geany, do not specify any filenames on
+the command-line, or disable opening files in a running instance
+using the appropriate command line option.
 
 
 Opening files from the command-line in a running instance
-- 
1.7.9

___
Geany-devel mailing list
Geany-devel@uvena.de
https://lists.uvena.de/cgi-bin/mailman/listinfo/geany-devel


Re: [Geany-devel] Some obsolete(?) bug reports

2012-02-17 Thread Dimitar Zhekov
On Mon, 13 Feb 2012 17:14:19 -0800
Matthew Brush mbr...@codebrainz.ca wrote:

  3. geany xyz.txt does not load files from session - ID: 2838686 [3]
 
  Here it wasn't decided whether of not Geany should restore session.  I
  suggest we discuss this question and finally either fix the bug or mark
  it as WONTFIX.
 
 
 I don't often use Geany for opening files from the command line and 
 usually I always have a Geany window open so if I do, it's not an issue, 
 so I can't really provide a worthwhile opinion here.

As the bug report states, opening a file _with your file manager_ or
CLI loses the last [default] session [if no geany is running]. The
complaints we usually got were I double-clicked foo.c and lost my
session, to which we usually replied use projects. So this affects
the GUI, even more than CLI.

Why not have a vote and finally implement or wontfix it? I volunteer to
write the preference, as a graphical or vaiouus preference, if we decide
aye.

-- 
E-gards: Jimmy
___
Geany-devel mailing list
Geany-devel@uvena.de
https://lists.uvena.de/cgi-bin/mailman/listinfo/geany-devel


Re: [Geany-devel] Some obsolete(?) bug reports

2012-02-12 Thread Dimitar Zhekov
On Sun, 12 Feb 2012 11:18:36 +0400
Eugene Arshinov earshi...@gmail.com wrote:

 2. Command line option to bring Geany to front - ID: 2276179 [2]
 
 Seems that some actions were performed to fix the bug, but the report's
 author didn't have time to check it.  Maybe, as a long time has
 passed since 2009, the bug report can be closed?  BTW, what is
 described in the report, works fine for me (Geany is brought to front).
 
 Enrico replied to this report in 2009, too.

From the discussion, it looks like Enrico fixed this... As of opening
Geany per-desktop, the manual contains an example (search for xprop).

 3. geany xyz.txt does not load files from session - ID: 2838686 [3]
 
 Here it wasn't decided whether of not Geany should restore session.  I
 suggest we discuss this question and finally either fix the bug or mark
 it as WONTFIX.
 
 A long time ago I added to the Preferences dialog a checkbox that
 controlled the behaviour.  This was done in the sm branch.  If it's
 decided that a graphical preference is needed, I can extract code from
 there and make a pull request.

That was discussed before, for example Proposed patch to fix issues
with command line file loading, and weltall even sent a patch [1] for
graphical preference. Outdated, of course, since it's a year old, and
Geany uses GtkBuilder now...

If we're going to finally implement this feature (and several people
requested it), I suggest that we apply #3312654 [2] first. The current
load_startup_files() is a bit of a mess, and becomes worse with the
new preference.

The thuth to be said, I had enough discussion on default session
loading CL files specified. Let's vote and decide it, shall we?..

[1] http://lists.uvena.de/pipermail/geany-devel/2011-January/003818.html
[2] 
http://sourceforge.net/tracker/?func=detailaid=3312654group_id=153444atid=787793

-- 
E-gards: Jimmy
___
Geany-devel mailing list
Geany-devel@uvena.de
https://lists.uvena.de/cgi-bin/mailman/listinfo/geany-devel


Re: [Geany-devel] get build command from a plugin

2012-02-04 Thread Dimitar Zhekov
On Sat, 4 Feb 2012 09:23:33 +1100
Lex Trotman ele...@gmail.com wrote:

  I tested with the following code in plugin_init():
 
  build_set_menu_item(GEANY_BCS_PROJ, GEANY_GBG_EXEC, 1, GEANY_BC_LABEL,
  boza);
 
 
 Can you post the problem plugin, or better reproduce the problem with
 demoplugin so we can eliminate other issues.

My mistake of some sort. With a clean clone (I'm using patched Geany)
and the demoplugin, the problem is gone.

-- 
E-gards: Jimmy
___
Geany-devel mailing list
Geany-devel@uvena.de
https://lists.uvena.de/cgi-bin/mailman/listinfo/geany-devel


Re: [Geany-devel] get build command from a plugin

2012-02-01 Thread Dimitar Zhekov
On Wed, 1 Feb 2012 11:24:01 +1100
Lex Trotman ele...@gmail.com wrote:

 On Wed, Feb 1, 2012 at 5:20 AM, Dimitar Zhekov dimitar.zhe...@gmail.com 
 wrote:
  On Tue, 31 Jan 2012 15:39:52 +1100
 
  I compile Geany with -Wall -W -Wno-unused-parameter (not the normal
  practice) and received a few warnings:
 
 Well, it should be normal practice, thats what HACKING says, I just
 forgot to set it with a new clean clone, oops.  Actually you should
 add -O2 because a couple of the warnings need the dataflow computation
 that the optimisation does.

I only listed the warnings, -O2 is a sine qua non (albeit -Os
-freorder-blocks is better for some systems).

 The semantics of a command (well actually the label) that is  vs
 NULL is important, a  label hides commands from a lower priority
 source without showing itself in the menu, a NULL does not. [...]
 
 Unfortunately there isn't anthing else besides NULL that is sensible
 to return to indicate out of range.

So returning  for COMMAND is possible...

 So I've exposed build_get_group_count() as well so you can get the
 count and then its your fault if you pass an out of range index :).

...but a count is fine too. :) Let's hope BuildFuncs makes it into
the plugin interface, the current lack of build access is weird.

-- 
E-gards: Jimmy
___
Geany-devel mailing list
Geany-devel@uvena.de
https://lists.uvena.de/cgi-bin/mailman/listinfo/geany-devel


Re: [Geany-devel] get build command from a plugin

2012-01-30 Thread Dimitar Zhekov
On Mon, 30 Jan 2012 14:08:59 +1100
Lex Trotman ele...@gmail.com wrote:

  How can I $subject?
 
 At the moment you can't officially access any of the build system from
 a plugin.

[::surprise::]

 Initially I exposed some of the build system (see comments starting /*
 * in build.h/c) but concerns were raised that this exposed the
 implementation so it was removed.

I don't see anything starting with /**, and there are lots of /* *...

 My attempts to proactively define an interface that does not expose
 any implementation structures was also rejected, so there is
 officially no way.

Hmmm... Have you tried something simple, like:

const gchar *build_get_command(ft, index, part)

Where:

ft = filetype | independent | exec
index = 0, 1, ...
part = label | command | workdir

rval = NULL if index is too big or some other argument is invalid.

Of course, it's not much different than the current build_get_*()
functions, but doesn't expose any build structures. And I guess
people will need the effective value, not some particular source.

 I guess you need to request the parts you need, and those will be
 exposed in the usual ad-hoc way.

Some home_ft/project specific commands. They're not hard to get, but
re-reading the key files is hardly the right thing.

-- 
E-gards: Jimmy
___
Geany-devel mailing list
Geany-devel@uvena.de
https://lists.uvena.de/cgi-bin/mailman/listinfo/geany-devel


[Geany-devel] get build command from a plugin

2012-01-28 Thread Dimitar Zhekov
Hi,

How can I $subject?

-- 
E-gards: Jimmy
___
Geany-devel mailing list
Geany-devel@uvena.de
https://lists.uvena.de/cgi-bin/mailman/listinfo/geany-devel


Re: [Geany-devel] Geany-Plugins: MAINTAINERS file

2012-01-06 Thread Dimitar Zhekov
On Fri, 06 Jan 2012 10:29:30 +0100
Frank Lanitz fr...@frank.uvena.de wrote:

 We have just added a MAINTAINERS into git to add a single point to find
 who is responsible for a plugin. Please be so kind and sending in
 patches or updating the file on your own [...]

Here's a patch.

-- 
E-gards: Jimmy
From 210845809a50b43a1c052ace25cdb365b4f923a4 Mon Sep 17 00:00:00 2001
From: Dimitar Zhekov dimitar.zhe...@gmail.com
Date: Fri, 6 Jan 2012 19:48:03 +0200
Subject: [PATCH] Added myself as maintainer of geanyextrasel and
 geanyinsertnum

---
 MAINTAINERS |   16 
 1 files changed, 8 insertions(+), 8 deletions(-)

diff --git a/MAINTAINERS b/MAINTAINERS
index b271549..6219dd7 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -43,10 +43,10 @@ W:
 S:
 
 geanyextrasel
-P:
-M:
-W:
-S:
+P: Dimitar Zhekov dimitar.zhe...@gmail.com
+M: Dimitar Zhekov dimitar.zhe...@gmail.com
+W: http://sheckley.users.sourceforge.net
+S: Supported
 
 geanygdb
 P: Dominic Hopf
@@ -61,10 +61,10 @@ W: http://plugins.geany.org/geanygendoc.html
 S: Supported
 
 geanyinsertnum
-P:
-M:
-W:
-S:
+P: Dimitar Zhekov dimitar.zhe...@gmail.com
+M: Dimitar Zhekov dimitar.zhe...@gmail.com
+W: http://sheckley.users.sourceforge.net
+S: Supported
 
 geanylatex
 P: Frank Lanitz fr...@frank.uvena.de
-- 
1.7.7.3

___
Geany-devel mailing list
Geany-devel@uvena.de
https://lists.uvena.de/cgi-bin/mailman/listinfo/geany-devel


Re: [Geany-devel] Session Management Interim Solution Proposal

2012-01-05 Thread Dimitar Zhekov
On Tue, 3 Jan 2012 09:20:08 +1100
Lex Trotman ele...@gmail.com wrote:

 Perhaps you already know since you didn't list it, XFCE4 will re-start
 firefox 5 with the tabs it last had open.  

Yes.

 XFCE is of course the DE of choice for developers since Linus switched
 to it from Gnome.

I woudn't attribute that to Linus...

 I *thought* that geany sm branch worked with it too, but that was on
 another machine, and I havn't the bandwidth here to download it to
 test.

If you mean the original Eugene's branch, it's xsmp.

With xfce, you can use the branch, or the tracker patch which is based
on it. But be sure to save your files, or bad things will happen...

Best of all, apply the patch, edit sm.c, and remove or comment out the
SmcInteractRequest() call in sm_save_yourself_callback(). No file
save prompts, but each Geany instance will be restarted with the set
of preferences / interface options / open files it had on logout.

Perhaps I should try to check SmcVendor() and skip interaction if xfce.

 My Googling before the OP suggested that Gnome didn't and there were a
 lot of unhappy people as a result.

Seems like they coudn't even implement that correctly and dropped it...

-- 
E-gards: Jimmy
___
Geany-devel mailing list
Geany-devel@uvena.de
https://lists.uvena.de/cgi-bin/mailman/listinfo/geany-devel


Re: [Geany-devel] Replacing the control socket with dbus

2011-12-31 Thread Dimitar Zhekov
On Sat, 31 Dec 2011 17:26:50 +0100
Arthur Skowronek arthu...@redsmile.org wrote:

 Hi,
 
 http://memegenerator.net/cache/instances/400x/12/12436/12734680.jpg

No it's not, and we'll probably have to subclass GApplication too.

 with this little stupid meme I would like to start a discussion about
 replacing the current control socket living somewhere in the
 ~/.config/geany directory space [...]

You can put it into /tmp (I do) or anywhere else.

 These tasks can be accomplished with GApplication too. On top of that we
 would get rid of:
  * cluttering the filesystem with sockets

$ find / -xdev | wc -l
98565

That's a relatively small (~2.2GB) desktop installation, without /home.

  * possibility of a dead lock in the doclist command

AFAIK, only open and openro are widely (really?) used.

  * general freeze while a client is connected to the socket.

Have you tested how long that lasts? If it doesn't freeze for more than
0.1 seconds, there isn't no point, scintilla delays are much more
noticable.

 The downside would be that the required version for GLib would be pushed
 to 2.28 and this version is not available on the stable branch for all
 distributions.

I guess that'll be about the time we bump the requirements to gtk+
2.22 or 2.24. We only recently increased them to 2.16 though...

 My suggestion therefore is to put this at least on the Todo list and
 replace it with the planned feature to use dbus.

I'm not against that, but is it worth?

 Greetings and a happy new year

:)

-- 
E-gards: Jimmy
___
Geany-devel mailing list
Geany-devel@uvena.de
https://lists.uvena.de/cgi-bin/mailman/listinfo/geany-devel


[Geany-devel] vergeany :)

2011-12-26 Thread Dimitar Zhekov
geanyentryaction.c:9: *  the Free Software Foundation; either
vergeany 2 of the License, or

geanyentryaction.c:10: *  (at your option) any later vergeany.

geanymenubuttonaction.c:9: *  the Free Software Foundation; either
vergeany 2 of the License, or

geanymenubuttonaction.c:10: *  (at your option) any later vergeany.

-- 
E-gards: Jimmy
___
Geany-devel mailing list
Geany-devel@uvena.de
https://lists.uvena.de/cgi-bin/mailman/listinfo/geany-devel


Re: [Geany-devel] statusbar virtual column

2011-12-10 Thread Dimitar Zhekov
On Sat, 10 Dec 2011 10:53:19 +0100
Frank Lanitz fr...@frank.uvena.de wrote:

 On Wed, 3 Aug 2011 20:04:18 +0300
 Dimitar Zhekov dimitar.zhe...@gmail.com wrote:
 
  As you may have noticed, when cursor is in the virtual space (beyond
  eoln), our status bar always shows the last real column. This small
  patch adds a new %v (and %V) format specification, [...]
 
 Has this patch been applied and or commented at some place?

No. You can fetch an up-to-date .diff from the patch tracker:

http://sourceforge.net/tracker/?func=detailaid=3399326group_id=153444atid=787793

It would have been nice to document the statusbar format specifications
in the manual, instead of pointing to src/ui_utils.c...

-- 
E-gards: Jimmy
___
Geany-devel mailing list
Geany-devel@uvena.de
https://lists.uvena.de/cgi-bin/mailman/listinfo/geany-devel


Re: [Geany-devel] Geany-Plugins: Git-transition

2011-12-07 Thread Dimitar Zhekov
On Tue, 06 Dec 2011 09:06:23 +0100
Frank Lanitz fr...@frank.uvena.de wrote:

 Hi developers,
 
 Jire and I just finally scheduled git transition of the plugins.
 [...]

Nice.

 Please let me also know you github accounts if available for
 committing to plugins etc.

zhekov

-- 
E-gards: Jimmy
___
Geany-devel mailing list
Geany-devel@uvena.de
https://lists.uvena.de/cgi-bin/mailman/listinfo/geany-devel


Re: [Geany-devel] Default search behavior is irritating

2011-12-05 Thread Dimitar Zhekov
On Sun, 04 Dec 2011 19:22:55 +0100
Colomban Wendling lists@herbesfolles.org wrote:

 Le 04/12/2011 14:44, Dimitar Zhekov a écrit :
  
  It turned out to be quite easy, because the two meanings are actualy
  used separately...
 
 Great!
 
 A few comments:
 
  * I better see the new prefs under the [serach] group, with
 pref_main_ prefix stripped;

Moved them just above pref_search_current_file_dir and removed
main_. Not sure about the pref_search_ though. All [search]
settings have a dialog prefix or infix, and pref_search_ looks to me
like Preferences dialog, Search section. If that's not the case,
please rename them as you see fit.

The compatibility code became a bit worse.

  * The GeanySearchPrefs struct change breaks the plugin ABI since it
 changes the offset of the use_current_word field that is in the API
 [1].  Since the prefs are not a whole anymore, just put one in place of
 suppress_dialogs and add the other somewhere after use_current_word
 (the only field in the API).

suppress_dialogs - always_wrap, hide_find_dialog at end.

-- 
E-gards: Jimmy
From 15fa8c054cb8f620d9b28a348d01649cd7c37f1e Mon Sep 17 00:00:00 2001
From: Dimitar Zhekov dimitar.zhe...@gmail.com
Date: Mon, 5 Dec 2011 21:24:33 +0200
Subject: [PATCH] split always wrap search and hide find dialog pref into
 always wrap search and hide find dialog

---
 geany.glade |   26 +++---
 src/document.c  |2 +-
 src/interface.c |   19 +--
 src/keyfile.c   |   14 --
 src/search.c|8 +---
 src/search.h|3 ++-
 6 files changed, 56 insertions(+), 16 deletions(-)

diff --git a/geany.glade b/geany.glade
index ba18b6f..4037970 100644
--- a/geany.glade
+++ b/geany.glade
@@ -3841,11 +3841,31 @@
 			  property name=spacing0/property
 
 			  child
-widget class=GtkCheckButton id=check_ask_suppress_search_dialogs
+widget class=GtkCheckButton id=check_always_wrap_search
   property name=visibleTrue/property
-  property name=tooltip translatable=yesAlways wrap search around the document and hide the Find dialog after clicking Find Next/Previous/property
+  property name=tooltip translatable=yesAlways wrap search around the document/property
   property name=can_focusTrue/property
-  property name=label translatable=yesAlways wrap search and hide the Find dialog/property
+  property name=label translatable=yesAlways wrap search/property
+  property name=use_underlineTrue/property
+  property name=reliefGTK_RELIEF_NORMAL/property
+  property name=focus_on_clickTrue/property
+  property name=activeFalse/property
+  property name=inconsistentFalse/property
+  property name=draw_indicatorTrue/property
+/widget
+packing
+  property name=padding0/property
+  property name=expandFalse/property
+  property name=fillFalse/property
+/packing
+			  /child
+
+			  child
+widget class=GtkCheckButton id=check_hide_find_dialog
+  property name=visibleTrue/property
+  property name=tooltip translatable=yesHide the Find dialog after clicking Find Next/Previous/property
+  property name=can_focusTrue/property
+  property name=label translatable=yesHide the Find dialog/property
   property name=use_underlineTrue/property
   property name=reliefGTK_RELIEF_NORMAL/property
   property name=focus_on_clickTrue/property
diff --git a/src/document.c b/src/document.c
index dbc1e39..ad437da 100644
--- a/src/document.c
+++ b/src/document.c
@@ -1939,7 +1939,7 @@ gint document_find_text(GeanyDocument *doc, const gchar *text, const gchar *orig
 		}
 
 		/* we searched only part of the document, so ask whether to wraparound. */
-		if (search_prefs.suppress_dialogs ||
+		if (search_prefs.always_wrap ||
 			dialogs_show_question_full(parent, GTK_STOCK_FIND, GTK_STOCK_CANCEL,
 _(Wrap search and find again?), _(\%s\ was not found.), original_text))
 		{
diff --git a/src/interface.c b/src/interface.c
index ce9fbff..126e794 100644
--- a/src/interface.c
+++ b/src/interface.c
@@ -2574,7 +2574,8 @@ create_prefs_dialog (void)
   GtkWidget *frame36;
   GtkWidget *alignment39;
   GtkWidget *vbox36;
-  GtkWidget *check_ask_suppress_search_dialogs;
+  GtkWidget *check_always_wrap_search;
+  GtkWidget *check_hide_find_dialog;
   GtkWidget *check_search_use_current_word;
   GtkWidget *check_fif_current_dir;
   GtkWidget *label215;
@@ -3195,10 +3196,15 @@ create_prefs_dialog (void)
   gtk_widget_show (vbox36);
   gtk_container_add (GTK_CONTAINER (alignment39), vbox36);
 
-  check_ask_suppress_search_dialogs = gtk_check_button_new_with_mnemonic (_(Always wrap search and hide the Find dialog));
-  gtk_widget_show (check_ask_suppress_search_dialogs);
-  gtk_box_pack_start (GTK_BOX (vbox36), check_ask_suppress_search_dialogs, FALSE, FALSE, 0);
-  gtk_tooltips_set_tip (tooltips, check_ask_suppress_search_dialogs, _(Always wrap search around the document and hide the Find dialog after clicking Find Next

Re: [Geany-devel] Default search behavior is irritating

2011-12-05 Thread Dimitar Zhekov
On Mon, 5 Dec 2011 03:21:45 +0800
Nathan Broadbent nathan@gmail.com wrote:

 2009-10-14 05:49:13 ntrel: I suppose we could make the option 'Always
 wrap' and then change the dialog 'close' checkbox to apply to all
 actions. Sound OK Enrico?
 
 2009-10-21 10:30:46 eht16: Nick, yes, sounds good.

I'm glad they didn't make it. Sounds good, technically, but as Colomban
pointed out, it's one thing to close the dialog after finding/marking
all matches (very likely), and another to close it after the first or
subsequent Next/Previous find.

 I'm a bit tired of the debate though, so I'm happy to just apply
 Dimitar's patch and close all of these feature request tickets :)

You'll need to re-check the prefs after the patch is officially
applied, they'll be in another group and renamed.

-- 
E-gards: Jimmy
___
Geany-devel mailing list
Geany-devel@uvena.de
https://lists.uvena.de/cgi-bin/mailman/listinfo/geany-devel


Re: [Geany-devel] Default search behavior is irritating

2011-12-04 Thread Dimitar Zhekov
On Sun, 04 Dec 2011 00:48:40 +0100
Colomban Wendling lists@herbesfolles.org wrote:

 Le 03/12/2011 20:56, Dimitar Zhekov a écrit :
 
  There is one, and only one thing, that is unquestionably better IMHO:
  separate [ ] Always wrap search and hide the Find dialog into [...]
 
 Yep, this sounds sensible to me.  It'd be better flexible and I can
 understand somebody was one and not the other.  So yeah, go ahead :)
 

It turned out to be quite easy, because the two meanings are actualy
used separately...

-- 
E-gards: Jimmy
From 85f038b6978e508c81947535a6ac099790a40d58 Mon Sep 17 00:00:00 2001
From: Dimitar Zhekov dimitar.zhe...@gmail.com
Date: Sun, 4 Dec 2011 15:15:59 +0200
Subject: [PATCH] split always wrap search and hide find dialog pref into
 always wrap search and hide find dialog

---
 geany.glade |   26 +++---
 src/document.c  |2 +-
 src/interface.c |   19 +--
 src/keyfile.c   |   19 +--
 src/search.c|4 +---
 src/search.h|3 ++-
 6 files changed, 57 insertions(+), 16 deletions(-)

diff --git a/geany.glade b/geany.glade
index ba18b6f..4037970 100644
--- a/geany.glade
+++ b/geany.glade
@@ -3841,11 +3841,31 @@
 			  property name=spacing0/property
 
 			  child
-widget class=GtkCheckButton id=check_ask_suppress_search_dialogs
+widget class=GtkCheckButton id=check_always_wrap_search
   property name=visibleTrue/property
-  property name=tooltip translatable=yesAlways wrap search around the document and hide the Find dialog after clicking Find Next/Previous/property
+  property name=tooltip translatable=yesAlways wrap search around the document/property
   property name=can_focusTrue/property
-  property name=label translatable=yesAlways wrap search and hide the Find dialog/property
+  property name=label translatable=yesAlways wrap search/property
+  property name=use_underlineTrue/property
+  property name=reliefGTK_RELIEF_NORMAL/property
+  property name=focus_on_clickTrue/property
+  property name=activeFalse/property
+  property name=inconsistentFalse/property
+  property name=draw_indicatorTrue/property
+/widget
+packing
+  property name=padding0/property
+  property name=expandFalse/property
+  property name=fillFalse/property
+/packing
+			  /child
+
+			  child
+widget class=GtkCheckButton id=check_hide_find_dialog
+  property name=visibleTrue/property
+  property name=tooltip translatable=yesHide the Find dialog after clicking Find Next/Previous/property
+  property name=can_focusTrue/property
+  property name=label translatable=yesHide the Find dialog/property
   property name=use_underlineTrue/property
   property name=reliefGTK_RELIEF_NORMAL/property
   property name=focus_on_clickTrue/property
diff --git a/src/document.c b/src/document.c
index dbc1e39..ad437da 100644
--- a/src/document.c
+++ b/src/document.c
@@ -1939,7 +1939,7 @@ gint document_find_text(GeanyDocument *doc, const gchar *text, const gchar *orig
 		}
 
 		/* we searched only part of the document, so ask whether to wraparound. */
-		if (search_prefs.suppress_dialogs ||
+		if (search_prefs.always_wrap ||
 			dialogs_show_question_full(parent, GTK_STOCK_FIND, GTK_STOCK_CANCEL,
 _(Wrap search and find again?), _(\%s\ was not found.), original_text))
 		{
diff --git a/src/interface.c b/src/interface.c
index ce9fbff..126e794 100644
--- a/src/interface.c
+++ b/src/interface.c
@@ -2574,7 +2574,8 @@ create_prefs_dialog (void)
   GtkWidget *frame36;
   GtkWidget *alignment39;
   GtkWidget *vbox36;
-  GtkWidget *check_ask_suppress_search_dialogs;
+  GtkWidget *check_always_wrap_search;
+  GtkWidget *check_hide_find_dialog;
   GtkWidget *check_search_use_current_word;
   GtkWidget *check_fif_current_dir;
   GtkWidget *label215;
@@ -3195,10 +3196,15 @@ create_prefs_dialog (void)
   gtk_widget_show (vbox36);
   gtk_container_add (GTK_CONTAINER (alignment39), vbox36);
 
-  check_ask_suppress_search_dialogs = gtk_check_button_new_with_mnemonic (_(Always wrap search and hide the Find dialog));
-  gtk_widget_show (check_ask_suppress_search_dialogs);
-  gtk_box_pack_start (GTK_BOX (vbox36), check_ask_suppress_search_dialogs, FALSE, FALSE, 0);
-  gtk_tooltips_set_tip (tooltips, check_ask_suppress_search_dialogs, _(Always wrap search around the document and hide the Find dialog after clicking Find Next/Previous), NULL);
+  check_always_wrap_search = gtk_check_button_new_with_mnemonic (_(Always wrap search));
+  gtk_widget_show (check_always_wrap_search);
+  gtk_box_pack_start (GTK_BOX (vbox36), check_always_wrap_search, FALSE, FALSE, 0);
+  gtk_tooltips_set_tip (tooltips, check_always_wrap_search, _(Always wrap search around the document), NULL);
+
+  check_hide_find_dialog = gtk_check_button_new_with_mnemonic (_(Hide the Find dialog));
+  gtk_widget_show (check_hide_find_dialog);
+  gtk_box_pack_start (GTK_BOX (vbox36

Re: [Geany-devel] Default search behavior is irritating

2011-12-03 Thread Dimitar Zhekov
On Sat, 3 Dec 2011 17:24:45 +0800
Nathan Broadbent nathan@gmail.com wrote:

 my personal preference is to always wrap search, but keep the find
 dialog open.

This is your personal preference only.

 
 So may I please request the following modifications to search:
 
- Move the 'Search' preferences to 'Editor' - 'Search  Replace',
instead of 'General' - 'Miscellaneous'

It took you a little while to find these preferences, and Geany
has a manual anyway.

- Remove the Always wrap search and hide the Find dialog setting.

What about the people who prefer to always hide the open dialog?

- Add a 'Wrap search' checkbox to the Find dialog, below the 'Close
dialog' checkbox.
- Make 'Wrap search' checked by default.

And that'll irritate anyone who prefers not to wrap, and has to uncheck
'Wrap search' any time (s)he starts Geany.

There is one, and only one thing, that is unquestionably better IMHO:
separate [ ] Always wrap search and hide the Find dialog into
[ ] Always wrap search and [ ] Hide the Find dialog. It can even be
implemented in backwards-compatible way, so if the lead developers
approve, I'll give it a try.

-- 
E-gards: Jimmy
___
Geany-devel mailing list
Geany-devel@uvena.de
https://lists.uvena.de/cgi-bin/mailman/listinfo/geany-devel


Re: [Geany-devel] (no subject)

2011-12-02 Thread Dimitar Zhekov
On Thu, 1 Dec 2011 14:57:25 -0500
Meyer 3m.me...@gmail.com wrote:

 I have two possible situations that I need to differentiate between
 [...] The first situation is the user deletes selected text by
 overwriting it with a new character.  The second is the user deletes
 selected text by pressing backspace/delete, and then enters a new
 character. [...] how I could accomplish this?

You can't. The underlying scintilla events are identical.

 I want to be able to select text, and then insert a character (e.g.
 an apostrophe) before and after the selection just by pressing the
 apostrophe key.  Since the normal behavior when a character is
 pressed while text is selected is to delete the text and insert a
 character [...]

Ignore keybindings and see extrasel key-press-event.
Remember to check scintilla_get_current() against the widget.

Somebody (nathan@gmail.com Nathan Broadbent?) recently asked
the exactly same question, and probably works on the same thing.
Check the mailing list archive.

-- 
E-gards: Jimmy
___
Geany-devel mailing list
Geany-devel@uvena.de
https://lists.uvena.de/cgi-bin/mailman/listinfo/geany-devel


Re: [Geany-devel] Greetings from an IDE refugee

2011-11-26 Thread Dimitar Zhekov
On Sat, 26 Nov 2011 19:31:07 +0100
Liviu Andronic landronim...@gmail.com wrote:

  I also think that the actual characters are much more
  appropriate triggers than 'Ctrl+key'.

You can do that from a plugin, see extrasel key-press-event.
Remember to check scintilla_get_current() against the widget.

 I fully agree with these points: the feature should be included in
 core Geany,

Hmmm...

 or best in its 'addons' plugin.

Being the author of extrasel, I'd still prefer plugins that connect
to key press to stay outside addons.

-- 
E-gards: Jimmy
___
Geany-devel mailing list
Geany-devel@uvena.de
https://lists.uvena.de/cgi-bin/mailman/listinfo/geany-devel


Re: [Geany-devel] --readonly handling

2011-11-21 Thread Dimitar Zhekov
On Mon, 21 Nov 2011 15:49:52 +0100
Colomban Wendling lists@herbesfolles.org wrote:

 Looks fine to me, could you provide a git-formatted patch (so there
 are authorship information in it) please?

Sure.

 Actually -Wmissing-field-initializers warns about fields implicitly
 initialized to 0, which is not a real problem but that often is
 unwanted.

I guess it's safe to expect that our CC will implement the 1990
standard on this. :)

-- 
E-gards: Jimmy
From d977e7cca730038893c85f020e67ba7b20f99621 Mon Sep 17 00:00:00 2001
From: Dimitar Zhekov dimitar.zhe...@gmail.com
Date: Mon, 21 Nov 2011 20:33:37 +0200
Subject: [PATCH] --read-only cleanup: use the global variable only when
 needed, add an initializer for it in the default options.

---
 src/document.c |2 +-
 src/main.c |   12 +++-
 src/socket.c   |4 +---
 3 files changed, 5 insertions(+), 13 deletions(-)

diff --git a/src/document.c b/src/document.c
index 48c9885..cf3fdcc 100644
--- a/src/document.c
+++ b/src/document.c
@@ -1162,7 +1162,7 @@ GeanyDocument *document_open_file_full(GeanyDocument *doc, const gchar *filename
 		doc-has_bom = filedata.bom;
 		store_saved_encoding(doc);	/* store the opened encoding for undo/redo */
 
-		doc-readonly = readonly || filedata.readonly || cl_options.readonly;
+		doc-readonly = readonly || filedata.readonly;
 		sci_set_readonly(doc-editor-sci, doc-readonly);
 
 		/* update line number margin width */
diff --git a/src/main.c b/src/main.c
index 17059ab..20d3d71 100644
--- a/src/main.c
+++ b/src/main.c
@@ -497,7 +497,7 @@ static void parse_command_line_options(gint *argc, gchar ***argv)
 	GError *error = NULL;
 	GOptionContext *context;
 	gint i;
-	CommandLineOptions def_clo = {FALSE, NULL, TRUE, -1, -1, FALSE, FALSE};
+	CommandLineOptions def_clo = {FALSE, NULL, TRUE, -1, -1, FALSE, FALSE, FALSE};
 
 	/* first initialise cl_options fields with default values */
 	cl_options = def_clo;
@@ -774,7 +774,7 @@ gboolean main_handle_filename(const gchar *locale_filename)
 
 	if (g_file_test(filename, G_FILE_TEST_IS_REGULAR))
 	{
-		doc = document_open_file(filename, FALSE, NULL, NULL);
+		doc = document_open_file(filename, cl_options.readonly, NULL, NULL);
 		/* add recent file manually if opening_session_files is set */
 		if (doc != NULL  main_status.opening_session_files)
 			ui_add_recent_document(doc);
@@ -887,19 +887,13 @@ void main_load_project_from_command_line(const gchar *locale_filename, gboolean
 static void load_startup_files(gint argc, gchar **argv)
 {
 	gboolean load_project_from_cl = FALSE;
-	gboolean cl_files_opened = FALSE;
 
 	/* ATM when opening a project file any other filenames are ignored */
 	load_project_from_cl = (argc  1)  g_str_has_suffix(argv[1], .geany);
 	if (load_project_from_cl  argc  2)
 		g_print(Ignoring extra filenames after %s, argv[1]);
 
-	if (!load_project_from_cl)
-		cl_files_opened = open_cl_files(argc, argv);
-	/* switch readonly mode off for session files, future files and projects */
-	cl_options.readonly = FALSE;
-
-	if (! cl_files_opened)
+	if (load_project_from_cl || ! open_cl_files(argc, argv))
 	{
 		if (prefs.load_session)
 		{
diff --git a/src/socket.c b/src/socket.c
index 0299479..92432fc 100644
--- a/src/socket.c
+++ b/src/socket.c
@@ -601,13 +601,11 @@ gboolean socket_lock_input_cb(GIOChannel *source, GIOCondition condition, gpoint
 	{
 		if (strncmp(buf, open, 4) == 0)
 		{
-			if (strncmp(buf+4, ro, 2) == 0) /* open in readonly? */
-cl_options.readonly = TRUE;
+			cl_options.readonly = strncmp(buf+4, ro, 2) == 0; /* open in readonly? */
 			while (socket_fd_gets(sock, buf, sizeof(buf)) != -1  *buf != '.')
 			{
 handle_input_filename(g_strstrip(buf));
 			}
-			cl_options.readonly = FALSE; /* disable again for future files */
 			popup = TRUE;
 		}
 		else if (strncmp(buf, doclist, 7) == 0)
-- 
1.7.7.1

___
Geany-devel mailing list
Geany-devel@uvena.de
https://lists.uvena.de/cgi-bin/mailman/listinfo/geany-devel


Re: [Geany-devel] --readonly handling

2011-11-18 Thread Dimitar Zhekov
On Thu, 17 Nov 2011 21:07:41 +0100
Thomas Martitz thomas.mart...@student.htw-berlin.de wrote:

 Am 17.11.2011 19:20, schrieb Dimitar Zhekov:
 
  Is there any technical reason to check cl_options.readonly in
  document.c, and clear it load_startup_files() [...]
 
 
 In an earlier version it also worked when opening a .geany file (so all 
 session files would be opened readonly). As opening via socket also goes 
 through main_handle_filename() (and hopefully nothing else?), I guess 
 there's no real reason anymore.

Here's a small patch that cleanups readonly handling, and adds the
missing def_clo.readonly initializer, which was a bug. Tested with
normal and socket open.

BTW, -Wmissing-field-initializers displays a huge number of warnings in
highlightingmappings.h (fill_eol and merge), and no warnings in any
other source file (except def_clo above).

-- 
E-gards: Jimmy
--- ./src/document.c.orig	2011-11-17 19:36:09.0 +0200
+++ ./src/document.c	2011-11-18 19:03:10.0 +0200
@@ -1162,7 +1162,7 @@
 		doc-has_bom = filedata.bom;
 		store_saved_encoding(doc);	/* store the opened encoding for undo/redo */
 
-		doc-readonly = readonly || filedata.readonly || cl_options.readonly;
+		doc-readonly = readonly || filedata.readonly;
 		sci_set_readonly(doc-editor-sci, doc-readonly);
 
 		/* update line number margin width */
--- ./src/main.c.orig	2011-11-17 19:36:09.0 +0200
+++ ./src/main.c	2011-11-18 19:24:52.0 +0200
@@ -497,7 +497,7 @@
 	GError *error = NULL;
 	GOptionContext *context;
 	gint i;
-	CommandLineOptions def_clo = {FALSE, NULL, TRUE, -1, -1, FALSE, FALSE};
+	CommandLineOptions def_clo = {FALSE, NULL, TRUE, -1, -1, FALSE, FALSE, FALSE};
 
 	/* first initialise cl_options fields with default values */
 	cl_options = def_clo;
@@ -774,7 +774,7 @@
 
 	if (g_file_test(filename, G_FILE_TEST_IS_REGULAR))
 	{
-		doc = document_open_file(filename, FALSE, NULL, NULL);
+		doc = document_open_file(filename, cl_options.readonly, NULL, NULL);
 		/* add recent file manually if opening_session_files is set */
 		if (doc != NULL  main_status.opening_session_files)
 			ui_add_recent_document(doc);
@@ -887,19 +887,13 @@
 static void load_startup_files(gint argc, gchar **argv)
 {
 	gboolean load_project_from_cl = FALSE;
-	gboolean cl_files_opened = FALSE;
 
 	/* ATM when opening a project file any other filenames are ignored */
 	load_project_from_cl = (argc  1)  g_str_has_suffix(argv[1], .geany);
 	if (load_project_from_cl  argc  2)
 		g_print(Ignoring extra filenames after %s, argv[1]);
 
-	if (!load_project_from_cl)
-		cl_files_opened = open_cl_files(argc, argv);
-	/* switch readonly mode off for session files, future files and projects */
-	cl_options.readonly = FALSE;
-
-	if (! cl_files_opened)
+	if (load_project_from_cl || ! open_cl_files(argc, argv))
 	{
 		if (prefs.load_session)
 		{
--- ./src/socket.c.orig	2011-11-17 19:36:09.0 +0200
+++ ./src/socket.c	2011-11-18 19:25:26.0 +0200
@@ -601,13 +601,11 @@
 	{
 		if (strncmp(buf, open, 4) == 0)
 		{
-			if (strncmp(buf+4, ro, 2) == 0) /* open in readonly? */
-cl_options.readonly = TRUE;
+			cl_options.readonly = strncmp(buf+4, ro, 2) == 0; /* open in readonly? */
 			while (socket_fd_gets(sock, buf, sizeof(buf)) != -1  *buf != '.')
 			{
 handle_input_filename(g_strstrip(buf));
 			}
-			cl_options.readonly = FALSE; /* disable again for future files */
 			popup = TRUE;
 		}
 		else if (strncmp(buf, doclist, 7) == 0)
___
Geany-devel mailing list
Geany-devel@uvena.de
https://lists.uvena.de/cgi-bin/mailman/listinfo/geany-devel


[Geany-devel] --readonly handling

2011-11-17 Thread Dimitar Zhekov
Hi,

Is there any technical reason to check cl_options.readonly in
document.c, and clear it load_startup_files(), instead of simply
invoking document_open_file(filename, cl_options.readonly, ...) from
main_handle_filename()?

-- 
E-gards: Jimmy
___
Geany-devel mailing list
Geany-devel@uvena.de
https://lists.uvena.de/cgi-bin/mailman/listinfo/geany-devel


Re: [Geany-devel] Stub project files for sharing

2011-11-09 Thread Dimitar Zhekov
On Wed, 9 Nov 2011 08:11:45 +1100
Lex Trotman ele...@gmail.com wrote:

 The simple solution is to add only save if changed as a new feature
 in stash so its easy to use for the settings that need it.

If that's the easy solution... Our instance will not know if another
instance has changed something, so a backup stash value won't suffice -
the keyfile would have to be re-read. Unless we tolerate a mix of
settings, that is...

And the vte prefs may or may not appear in stash on Geany start, due
to the runtime load vte behaviour.

(Excuse me if these were already discussed - TL;DR)

 Whilst the problem is worth solving, neither suggestion is resolved.
 
 So in time honoured tradition I'm going to do nothing, until the
 issues are sorted.

+1. :)

-- 
E-gards: Jimmy
___
Geany-devel mailing list
Geany-devel@uvena.de
https://lists.uvena.de/cgi-bin/mailman/listinfo/geany-devel


[Geany-devel] Convert Unix path separators on Windows when opening documents

2011-11-07 Thread Dimitar Zhekov
commit 13597df9dffdcbd3091aac224d20b1924c563bde
Author: Nick Treleaven nick.trelea...@btinternet.com

 [...] Windows does not allow filenames to contain Unix path
 separators so this should be safe.

Windows treats '/' as directory separator starting with DOS 5.0 IIRC.
100% safe to convert, since a directory separator can never be part of
the file name.

It would be good to convert any '/' in the messages window filenames
too, for document_find_*() to work properly. OTOH, it may be easier to
write a real utils_filenamecmp() which assumes '/' == '\\' under Win~1.

-- 
E-gards: Jimmy
___
Geany-devel mailing list
Geany-devel@uvena.de
https://lists.uvena.de/cgi-bin/mailman/listinfo/geany-devel


Re: [Geany-devel] Proposal: Project settings split - adding geany features

2011-11-05 Thread Dimitar Zhekov
On Thu, 03 Nov 2011 20:03:02 -0700
Matthew Brush mbr...@codebrainz.ca wrote:

 At a high level, the most sensible thing to do IMO, is to split out 
 state/session information into a separate file 
 (~/.config/geany/.geanysession) for Geany itself, and then mirror this 
 in the project directory (~/project-under-vcs/foobar.geany and 
 ~/project-under-vcs/.geanysession).

Why not ~/.config/geany/geany.session and /.../project.geanysession? I
woudn't like geany to place a hidden file in the project directory,
with no way to move it in the project file directory.

 Now take everything I just wrote and apply it to two other files; 
 ~/my-project/projectfile.geany and ~/my-project/.geanysession.  When a 
 project opens, the project file and project session file overlay on 
 top of the global/default settings/keys from ~/.config/geany/geany.conf 
 and ~/.config/geany/.geanysession.  Changes to the sidebar position for 
 example would get written to ~/my-project/.geanysession and a change of 
 indent type would go into ~/my-project/projectfile.geany.

Would be nice, unless Edit - Preferences decides to save the full set
of options (even unchanged ones) in projectfile.geany. If I decide to
change, say, the symbol list font, and have to do that for every
project... well, the current configuration seems pretty reasonable.

But compating the two option sets, and (ideally) indicating the default
(unchanged) settings with gray, as in the build dialog, goes beyound
not exactly trivial.

-- 
E-gards: Jimmy
___
Geany-devel mailing list
Geany-devel@uvena.de
https://lists.uvena.de/cgi-bin/mailman/listinfo/geany-devel


Re: [Geany-devel] Proposal: Project settings split

2011-11-02 Thread Dimitar Zhekov
On Wed, 2 Nov 2011 09:39:48 +1100
Lex Trotman ele...@gmail.com wrote:

 On 2 November 2011 05:19, Dimitar Zhekov dimitar.zhe...@gmail.com wrote:
  On Tue, 1 Nov 2011 12:21:25 +1100
  Lex Trotman ele...@gmail.com wrote:
 
  At which point will you delete the unneeded session files?..
 
 When they fall off the recent projects list.

For a small number of projects, that can keep the session file for
years after the project is gone. Not a big deal though.

For many projects, well, you'd better max the recent count...

 Am 01.11.2011 23:39, schrieb Lex Trotman:
 
  The point is to get the session file out of the project tree, so no
  this defeats the purpose.
 
 
 The point was to get the file list (i.e. what would be in that session 
 file) out of VCS while keeping the project settings in.
 
 This works with separate files even if in the same directory, since 
 every reasonable VCS supports ignoring certain files (svn:ignore, 
 .gitignore).

Of course. Personally I prefer to keep my projects clean from at least
the object files and executables, but the IDEs do not hesistate to put
there various .suo, .dsw, autogenerated .mak, entire directories even.
Ignoring one more file (or not putting in on VCS in the first place) is
hardly of any significance.

-- 
E-gards: Jimmy
___
Geany-devel mailing list
Geany-devel@uvena.de
https://lists.uvena.de/cgi-bin/mailman/listinfo/geany-devel


Re: [Geany-devel] Proposal: Project settings split

2011-11-01 Thread Dimitar Zhekov
On Tue, 1 Nov 2011 12:21:25 +1100
Lex Trotman ele...@gmail.com wrote:

 On 1 November 2011 11:49, Matthew Brush mbr...@codebrainz.ca wrote:
  On 11-10-31 04:50 PM, Lex Trotman wrote:
 
  Sessions should be user-transparent things like window geometry,
  number of instances opened, last project/files, etc. and maybe
  should be workspace/profile-specific.
 
 Yes, except for instances.  Geany itself shouldn't handle those,
 thats the session manager's problem.

The current sm1 will handle that, unless you decide to separate the
default session from geany.conf (which makes some sense btw).

 But of course Gnome session manager is so broken that several current
 distros removed the option to use it, so I'm not sure when SM might
 work right.

Without a manager it won't work = same as the current non-sm Geany.

(OT: I wonder how many developers will stand a Gnome 3 or Unity
interface, with the session support removed on top of that).

 I will have some time next week, so this thread is to get ideas or
 objections sorted before then.

Applying #3312654 may help you a bit.

 To prevent the config dir getting too cluttered the session files can
 be kept only as long as the project remains in the recent projects
 list. (maybe needs a separate length setting, currently uses
 file_prefs.mru_length)

At which point will you delete the unneeded session files?..

From what I've seen, the IDEs indeed keep the settings and file list
separate, but in the same directory. So if you delete the entire project
directory, both go (if located there). And when you decide to delete a
single project file, the session file is just next to it.

-- 
E-gards: Jimmy
___
Geany-devel mailing list
Geany-devel@uvena.de
https://lists.uvena.de/cgi-bin/mailman/listinfo/geany-devel


Re: [Geany-devel] [RFC] Geany Plugin Names

2011-10-29 Thread Dimitar Zhekov
On Fri, 28 Oct 2011 22:41:07 -0700
Matthew Brush mbr...@codebrainz.ca wrote:

 Is anybody opposed to removing the geany and Geany prefix from the 
 plugins in Geany-Plugins.  I mean at least for the directory name in the 
 source tree, README/Site, and PLUGIN_SET_INFO() name?

-1. When installing binary packages, typing geany in the search box
is the easiest way to see all the plugins. Personally I don't feel like
installing the entire geany-plugins package (or all xfce panel plugins,
all X11 video drivers etc.)

If we decide to remove the prefix, Extra Selections should be Extra
Selection.

-- 
E-gards: Jimmy
___
Geany-devel mailing list
Geany-devel@uvena.de
https://lists.uvena.de/cgi-bin/mailman/listinfo/geany-devel


[Geany-devel] Speed up simplify stash tree display/update

2011-10-18 Thread Dimitar Zhekov
Hi,

Now that StashTreeValue has an entry pointer, value-setting_type and
value-key_name can be dropped.

Also, the stash_tree_action:_get_iter_first, _iter_next should be
written as gtk_tree_model_foreach(model, stash_tree_handle_pref,
action). It's ~15% slower, but that doesn't matter any more.

And of course, stash_foreach_various_pref can be inlined into
stash_tree_setup, and call stash_tree_append_pref directly, or
even inline it too.

-- 
E-gards: Jimmy
___
Geany-devel mailing list
Geany-devel@uvena.de
https://lists.uvena.de/cgi-bin/mailman/listinfo/geany-devel


Re: [Geany-devel] Geany is on Github

2011-10-08 Thread Dimitar Zhekov
On Fri, 07 Oct 2011 08:28:04 -0700
Matthew Brush mbr...@codebrainz.ca wrote:

 And don't forget to give me your Github usernames!

zhekov

-- 
E-gards: Jimmy
___
Geany-devel mailing list
Geany-devel@uvena.de
https://lists.uvena.de/cgi-bin/mailman/listinfo/geany-devel


Re: [Geany-devel] New Feature(plugin OR geany self)

2011-10-04 Thread Dimitar Zhekov
On Sun, 2 Oct 2011 22:15:56 +0200
Jiří Techet tec...@gmail.com wrote:

 On Sun, Oct 2, 2011 at 15:36, Dimitar Zhekov dimitar.zhe...@gmail.com wrote:

  On Thu, 29 Sep 2011 22:52:19 +0200
  Jiří Techet tec...@gmail.com wrote:
 
  By the way, there's a bug in the MRU code [...]
 
  Can you please drop a copy of the patch in Geany bug or patch tracker?
 
 https://sourceforge.net/tracker/?func=detailaid=3417269group_id=153444atid=787793

Thanks, and for 0001 0003 too. *sign* The day I'll be using unpatched
Geany went farther in the future again... ;)

 Please apply patch
 
 https://sourceforge.net/tracker/?func=detailaid=3417268group_id=153444atid=787793
 
 before - it slightly conflicts with the other patch and as I want to
 have it in Geany too [...]

+1, I would have applied it anyway.

-- 
E-gards: Jimmy
___
Geany-devel mailing list
Geany-devel@uvena.de
https://lists.uvena.de/cgi-bin/mailman/listinfo/geany-devel


Re: [Geany-devel] New Feature(plugin OR geany self)

2011-10-02 Thread Dimitar Zhekov
On Thu, 29 Sep 2011 22:52:19 +0200
Jiří Techet tec...@gmail.com wrote:

 By the way, there's a bug in the MRU code.
 
 1. Open Geany with say 3 files,
 2. ctrl-tab until you reach the very same file you have currently displayed,
 3. release ctrl,
 4. ctrl-tab again. Nothing happens until you ctrl-tab one more time.
 
 I have a patch for it in my yet-to-be-reviewed patch queue (for more
 than a year).

I remember having this problem when I worked with very few files. Can
you please drop a copy of the patch in Geany bug or patch tracker?

 I also have a patch for the popup window so it shows the current
 file in bold and the following three files in MRU below it. It
 helps with predicting which file opens after ctrl-tab next.

Nice. :)

 You could even return to the file before ctrl+tab press if you
 overshot [...] I could enhance my patch to allow this too if someone
 finds it useful.

Ctrl+Shift+Tab would be very convinient.

-- 
E-gards: Jimmy
___
Geany-devel mailing list
Geany-devel@uvena.de
https://lists.uvena.de/cgi-bin/mailman/listinfo/geany-devel


Re: [Geany-devel] New Feature(plugin OR geany self)

2011-09-29 Thread Dimitar Zhekov
On Thu, 29 Sep 2011 18:13:53 +1000
Lex Trotman ele...@gmail.com wrote:

 Perhaps another method of indicating such as colouring or re-ordering
 the notebook tabs could be used instead or as well as the sidebar.

I remember seeing red color somewhere, for tabs with changed documents,
slowly fading to pink for non-recent changes. On save, it went blue,
fading to the (light-gray) tab background color.

Didn't liked it, though. Amusing, but distracting.

-- 
E-gards: Jimmy
___
Geany-devel mailing list
Geany-devel@uvena.de
https://lists.uvena.de/cgi-bin/mailman/listinfo/geany-devel


Re: [Geany-devel] Use GtkBuilder

2011-09-29 Thread Dimitar Zhekov
On Thu, 29 Sep 2011 09:16:26 +1000
Lex Trotman ele...@gmail.com wrote:

 Hi Dimitar,
 
 [...]
  When checking the various
  preferences or something, I found 2 crashes when vte is compiled but
 
 Ok, if thats the case lets ignore the possibility of runtime loading
 and just compile it in/out.

These were fixed, so don't worry. But I only checked the preferences
related stuff (for xsm perhaps?), not the entire code.

-- 
E-gards: Jimmy
___
Geany-devel mailing list
Geany-devel@uvena.de
https://lists.uvena.de/cgi-bin/mailman/listinfo/geany-devel


Re: [Geany-devel] Use GtkBuilder

2011-09-28 Thread Dimitar Zhekov
On Mon, 26 Sep 2011 12:33:30 +1000
Lex Trotman ele...@gmail.com wrote:

 On 26 September 2011 01:26, Dimitar Zhekov dimitar.zhe...@gmail.com wrote:
 
  When we upgrade (someday) to 2.16, why not make VTE a compile time
  option only? I can understand why somebody would like to compile Geany
  without vte support, but since all novadays gtk+ terminal emulators are
  based on vte, making it a run-time option seems like overkill to me. It
  was a good thing, several years ago...
 
 The problem with this is that means that all binary packages now
 depend on vte.

Of course. However:

- when using binary packages, you should be prepared for some extra
  dependencies
- again, all novadays gtk+ terminal emulators are libvte based.

 If you might want to compile it out, then you might
 not want to install it.

Hmmm... Just how many programs have you seen that can be compiled
--with-libfoo but started without libfoo? Aside from Geany, I only
know of mplayer which can be compiled with win32 dll-s support, but
started even if no dll-s are present, for obvious reasons.
If you want to install it out, compile it out.

 Or there would need to be several binary packages, with and without
 VTE compiled in which is more maintenance.

No sane package maintainer will bother. When checking the various
preferences or something, I found 2 crashes when vte is compiled but
not loaded. That kind of hints how many people use Geany with vte
compiled but not installed...

 With the runtime check VTE does not need to be installed.

Indeed. :) Let's hope there aren't any more crashes. Not that anyone
will notice them.

-- 
E-gards: Jimmy
___
Geany-devel mailing list
Geany-devel@uvena.de
https://lists.uvena.de/cgi-bin/mailman/listinfo/geany-devel


Re: [Geany-devel] Use GtkBuilder

2011-09-25 Thread Dimitar Zhekov
On Sun, 25 Sep 2011 01:53:38 -0700
Matthew Brush mbr...@codebrainz.ca wrote:

 I've also taken the liberty of porting the Terminal/VTE preferences UI 
 to the new Glade 3 format rather than being hard-coded.  IIUC if the 
 VTE/terminal is not enabled for whatever reason, the Terminal tab in 
 the preferences dialog just won't be shown.

When we upgrade (someday) to 2.16, why not make VTE a compile time
option only? I can understand why somebody would like to compile Geany
without vte support, but since all novadays gtk+ terminal emulators are
based on vte, making it a run-time option seems like overkill to me. It
was a good thing, several years ago...

That will require some work, of course: replacing if (vf-func != NULL),
cleaning up the vte_info and vc checks. I volunteer.

-- 
E-gards: Jimmy
___
Geany-devel mailing list
Geany-devel@uvena.de
https://lists.uvena.de/cgi-bin/mailman/listinfo/geany-devel


Re: [Geany-devel] saving plugin settings in a project file

2011-09-24 Thread Dimitar Zhekov
On Fri, 23 Sep 2011 19:52:24 +0200
Thomas Martitz thomas.mart...@student.htw-berlin.de wrote:

 Am 21.09.2011 18:01, schrieb Dimitar Zhekov:
 
  What you need is debug sessions, and they depend on the executable being
  debugged. It doesn't make sense to use the same breakpoints, watches
  etc. for more than one program, or two sets of these for the same
  program.
 
 I disagree with the very last statement. If you're working at the same 
 project in different branches you might want to debug different parts. 

Are you using several branches with a single executable name? I prefer
to keep my source directories clean and generate the object and
executable files outside them, but at least each branch has it's own
output directory.

-- 
E-gards: Jimmy
___
Geany-devel mailing list
Geany-devel@uvena.de
https://lists.uvena.de/cgi-bin/mailman/listinfo/geany-devel


Re: [Geany-devel] saving plugin settings in a project file

2011-09-21 Thread Dimitar Zhekov
On Wed, 21 Sep 2011 17:18:14 +0400
Alexander Petukhov de...@apetukhov.ru wrote:

 What I wanted was to have debug settings loaded at the same time I open 
 files I worked with last time. [...] but now I realize that I can store
 debug settings for a session in plugins own config, where all other
 plugin level stuff reside and if a user works with a project - store
 debug settings in a project, [...]

What you need is debug sessions, and they depend on the executable being
debugged. It doesn't make sense to use the same breakpoints, watches
etc. for more than one program, or two sets of these for the same
program.

I think you can store the debug session settings in the plugin main and
only configuration file, with section names dependent on the full
executable name, for example it's md5 sum:

/home/build/projects/testing/geany - [945b93c3fe68a0fe63ac6e8e528c59a5]
...settings...

/home/build/source/fnatools/fnstofna -
[1b216f36ac78dd903085214692c821cc]
...settings...

etc. Note that the projects sessions do not necessarily match the
debug sessions - for example, a project may produce several executable
files, and they will not share the same debugging session.

-- 
E-gards: Jimmy
___
Geany-devel mailing list
Geany-devel@uvena.de
https://lists.uvena.de/cgi-bin/mailman/listinfo/geany-devel


Re: [Geany-devel] How about calling the next release 1.0?

2011-09-20 Thread Dimitar Zhekov
On Tue, 20 Sep 2011 12:07:23 +0200
Jiří Techet tec...@gmail.com wrote:

 How about getting rid of the 0 version prefix and calling the next
 release 1.0?

+1.0 :) Much more reliable that my primary IDE, which is version 5.

Though I'd prefer to see stash-tree-display-5923.diff (from the last
(Various pref changes not ignored on dialog cancel message) before
that. use_safe_file_saving was renamed, so it won't be nice to leave
the last known various prefs problem hanging.

-- 
E-gards: Jimmy
___
Geany-devel mailing list
Geany-devel@uvena.de
https://lists.uvena.de/cgi-bin/mailman/listinfo/geany-devel


Re: [Geany-devel] various prefs warning - changing 'various'

2011-09-17 Thread Dimitar Zhekov
On Fri, 16 Sep 2011 19:25:39 -0700
Matthew Brush mbr...@codebrainz.ca wrote:

 I can't recall ever encountering the word Various in the context of 
 computers/software.  I suppose that's the reason it seems weird.

I've seen Miscellaneous preferences, and prefer not to see it
again. :) Good thing that my mailer has a spell checker. How is that
pronounced is beyond me.

-- 
E-gards: Jimmy
___
Geany-devel mailing list
Geany-devel@uvena.de
https://lists.uvena.de/cgi-bin/mailman/listinfo/geany-devel


Re: [Geany-devel] Various pref changes not ignored on dialog cancel

2011-09-16 Thread Dimitar Zhekov
Hi,

Attached is the stash_tree_display(). I thought that a row changed
signal will be needed, but it works without it. The renreders always
reget their data when the tree is shown.

No string changes. _append_pref() ignores the new action argument.

-- 
E-gards: Jimmy
--- ./src/prefs.c.orig	2011-08-14 14:52:08.0 +0300
+++ ./src/prefs.c	2011-09-16 19:19:18.0 +0300
@@ -109,6 +109,7 @@
 {
 	StashGroup *group;
 	guint i;
+	GtkWidget *widget = ui_lookup_widget(ui_widgets.prefs_dialog, various_treeview);
 
 	foreach_ptr_array(group, i, pref_groups)
 	{
@@ -123,10 +124,14 @@
 		}
 	}
 
-	if (action == PREF_UPDATE)
+	switch (action)
 	{
-		GtkWidget *widget = ui_lookup_widget(ui_widgets.prefs_dialog, various_treeview);
-		stash_tree_update(pref_groups, GTK_TREE_VIEW(widget));
+		case PREF_DISPLAY:
+			stash_tree_display(pref_groups, GTK_TREE_VIEW(widget));
+			break;
+		case PREF_UPDATE:
+			stash_tree_update(pref_groups, GTK_TREE_VIEW(widget));
+			break;
 	}
 }
 
--- ./src/stash.c.orig	2011-08-14 14:52:08.0 +0300
+++ ./src/stash.c	2011-09-16 20:07:23.0 +0300
@@ -1008,10 +1008,11 @@
 }
 
 
-typedef void (*stash_foreach_pref_func)(StashGroup *group, StashPref *entry, gpointer user_data);
+typedef void (*stash_foreach_pref_func)(StashGroup *group, StashPref *entry, gpointer container,
+	PrefAction action);
 
 static void stash_foreach_various_pref(GPtrArray *group_array, stash_foreach_pref_func pref_func,
-	gpointer user_data)
+	gpointer container, PrefAction action)
 {
 	StashGroup *group;
 	guint i;
@@ -1022,39 +1023,22 @@
 		if (group-various)
 		{
 			foreach_array(StashPref, entry, group-entries)
-pref_func(group, entry, user_data);
+pref_func(group, entry, container, action);
 		}
 	}
 }
 
 
-static void stash_tree_append_pref(StashGroup *group, StashPref *entry, GtkListStore *store)
+static void stash_tree_append_pref(StashGroup *group, StashPref *entry, GtkListStore *store,
+	PrefAction action)
 {
-	gpointer setting;
 	GtkTreeIter iter;
 	StashTreeValue *value;
 
-	switch (entry-setting_type)
-	{
-		case G_TYPE_BOOLEAN:
-			setting = GINT_TO_POINTER(*(gboolean *) entry-setting);
-			break;
-		case G_TYPE_INT:
-			setting = GINT_TO_POINTER(*(gint *) entry-setting);
-			break;
-		case G_TYPE_STRING:
-			setting = g_strdup(*(gchararray *) entry-setting);
-			break;
-		default:
-			g_warning(Unhandled type for %s::%s in %s()!, group-name,
-entry-key_name, G_STRFUNC);
-			return;
-	}
-
 	value = g_new(StashTreeValue, 1);
 
 	value-setting_type = entry-setting_type;
-	value-setting = setting;
+	value-setting = NULL;
 	value-key_name = entry-key_name;
 	value-group_name = group-name;
 
@@ -1077,7 +1061,7 @@
 
 	store = gtk_list_store_new(STASH_TREE_COUNT, G_TYPE_STRING, G_TYPE_POINTER);
 	stash_foreach_various_pref(group_array,
-		(stash_foreach_pref_func) stash_tree_append_pref, store);
+		(stash_foreach_pref_func) stash_tree_append_pref, store, PREF_DISPLAY);
 	gtk_tree_sortable_set_sort_column_id(GTK_TREE_SORTABLE(store), STASH_TREE_NAME,
 		GTK_SORT_ASCENDING);
 
@@ -1120,14 +1104,62 @@
 }
 
 
+static void stash_tree_display_pref(StashTreeValue *value, StashPref *entry)
+{
+	switch (entry-setting_type)
+	{
+		case G_TYPE_BOOLEAN:
+			value-setting = GINT_TO_POINTER(*(gboolean *) entry-setting);
+			break;
+		case G_TYPE_INT:
+			value-setting = GINT_TO_POINTER(*(gint *) entry-setting);
+			break;
+		case G_TYPE_STRING:
+		{
+			g_free(value-setting);
+			value-setting = g_strdup(*(gchararray *) entry-setting);
+			break;
+		}
+		default:
+			g_warning(Unhandled type for %s::%s in %s()!, value-group_name,
+entry-key_name, G_STRFUNC);
+	}
+}
+
+
+static void stash_tree_update_pref(StashTreeValue *value, StashPref *entry)
+{
+	gpointer *setting = value-setting;
+
+	switch (entry-setting_type)
+	{
+		case G_TYPE_BOOLEAN:
+			*(gboolean *) entry-setting = GPOINTER_TO_INT(setting);
+			break;
+		case G_TYPE_INT:
+			*(gint *) entry-setting = GPOINTER_TO_INT(setting);
+			break;
+		case G_TYPE_STRING:
+		{
+			gchararray *text = entry-setting;
+			g_free(*text);
+			*text = g_strdup((gchararray) setting);
+			break;
+		}
+		default:
+			g_warning(Unhandled type for %s::%s in %s()!, value-group_name,
+value-key_name, G_STRFUNC);
+	}
+}
+
 /* These functions can handle about 200 settings on a 1GHz x86 CPU in ~0.06 seconds.
  * For 250+ settings, you'd better write something more efficient. */
-static void stash_tree_update_pref(StashGroup *group, StashPref *entry, GtkTreeModel *model)
+static void stash_tree_handle_pref(StashGroup *group, StashPref *entry, GtkTreeModel *model,
+	PrefAction action)
 {
 	GtkTreeIter iter;
 	gboolean valid = gtk_tree_model_get_iter_first(model, iter);
 	StashTreeValue *value;
-	gpointer *setting;
 
 	while (valid)
 	{
@@ -1136,23 +1168,14 @@
 		if (strcmp(group-name, value-group_name) == 0 
 			strcmp(entry-key_name, value-key_name) == 0)
 		{
-			setting = value-setting;
-
-			switch (entry-setting_type)
+			switch (action)
 			{
-

Re: [Geany-devel] various prefs warning

2011-09-15 Thread Dimitar Zhekov
On Thu, 15 Sep 2011 00:30:44 +0200
Colomban Wendling lists@herbesfolles.org wrote:

  What are the problems with changing use_safe_file_saving? I don't see
  how the previous value may affect anything.
 
 As you say yourself below, it's a dangerous setting because it changes
 the way the file saving works, and actually breaks links, permissions,
 etc.  So yes, this one is a sensitive setting.

Oh, sorry. At the time of the initial various prefs implementation,
there were doubts whether changing any of these settings while Geany is
running may break something, so that's the first thing which came to my
mind...

On Thu, 15 Sep 2011 00:30:44 +0200
Colomban Wendling lists@herbesfolles.org wrote:

 I'm puzzled between adding annoyance to the user and preventing her to
 touch sensitive settings without a good reason.

On Thu, 15 Sep 2011 09:45:55 +1000
Lex Trotman ele...@gmail.com wrote:

 Sadly I think warnings are useless, [...] This is a tool for programmers
 remember, ie us :-)

On Thu, 15 Sep 2011 15:48:31 +0100 (BST)
Nick Treleaven nick.trelea...@btopenworld.com wrote:

 I don't want to make it hard to use, just more obvious that the user
 should be careful.

I don't think these settings will or should be changed often, so
making the access to them a bit harder shoudn't matter much. However,
once the user promises to be careful or whatever, let's give him/her the
full page, without horizontal space wasted by an expander, or vertical
by a label, or some other widget.

A two-page scheme will require a bit more work, of course, but I have
free time ATM. Nick, if you don't feel like writing it, drop me a
note and I'll give it a try.

-- 
E-gards: Jimmy
___
Geany-devel mailing list
Geany-devel@uvena.de
https://lists.uvena.de/cgi-bin/mailman/listinfo/geany-devel


Re: [Geany-devel] Various pref changes not ignored on dialog cancel

2011-09-15 Thread Dimitar Zhekov
On Thu, 15 Sep 2011 17:45:25 +0100 (BST)
Nick Treleaven nick.trelea...@btopenworld.com wrote:

 I've found a bug when changing a various pref setting in the prefs
 dialog, then cancelling the dialog without applying the changes.
 Next time the dialog is shown the edited values are still present.

Yes, for the integer values. We (me and Colomban) know, and discussed
it on the patch tracker page. IIRC, it's a bug in the spin renderer -
if you click outside the entry, it generates an editing done signal
instead of editing cancelled. Fixing it required nasty hacking, and/or
was dependent on the gtk+ version...

The other option is to use the text renderer for integers (as you can
see, the statusbar_template is OK). As a side effect, the initial page
creation will be about 20% faster. But we'll lose the cute arrows. :)

-- 
E-gards: Jimmy
___
Geany-devel mailing list
Geany-devel@uvena.de
https://lists.uvena.de/cgi-bin/mailman/listinfo/geany-devel


Re: [Geany-devel] Various pref changes not ignored on dialog cancel

2011-09-15 Thread Dimitar Zhekov
On Thu, 15 Sep 2011 17:45:25 +0100 (BST)
Nick Treleaven nick.trelea...@btopenworld.com wrote:

 I've found a bug when changing a various pref setting in the prefs
 dialog, then cancelling the dialog without applying the changes.
 Next time the dialog is shown the edited values are still present.

You are right, the problem is that cancelling will not reset the
internal stash tree values (the spin renderer is an unrelated bug).

How about adding a PREF_CANCEL action to prefs.c only that will call a
stash_group_cancel() to reset the values? The other option is to clear
the store, but that means recreating the various list [a visibly slow
process] each time Edit - Preferences is invoked, while traversing the
model is fast.

-- 
E-gards: Jimmy
___
Geany-devel mailing list
Geany-devel@uvena.de
https://lists.uvena.de/cgi-bin/mailman/listinfo/geany-devel


Re: [Geany-devel] SF.net SVN: geany:[5909] trunk/src/utils.c

2011-09-12 Thread Dimitar Zhekov
On Mon, 12 Sep 2011 15:27:07 +0200
Colomban Wendling lists@herbesfolles.org wrote:

 Actually firefox on Debian (at least mine?) runs Iceweasel, so it's
 not a concern from our POV.

debian$ cat /usr/bin/firefox

#!/bin/sh

FIREFOX=$(which $0)
[ -x $FIREFOX.real ]  exec $FIREFOX.real $@

exec iceweasel $@

-- 
E-gards: Jimmy
___
Geany-devel mailing list
Geany-devel@uvena.de
https://lists.uvena.de/cgi-bin/mailman/listinfo/geany-devel


Re: [Geany-devel] Why Geany doesn't use exactly what is set in marker_search?

2011-09-09 Thread Dimitar Zhekov
On Fri, 09 Sep 2011 10:55:33 -0400
Jean-Philippe Fleury cont...@jpfleury.net wrote:

 Thanks for these precisions. However, I'm still not able to make 
 marker_translucency have any effect. See the attached screenshot. 
 There are 4 different settings for marker_translucency, but the little 
 yellow arrow and the plus sign appearing in the margin don't change.

With the Markers Margin hidden, you don't have arrow or plus, so the
entire line is highlighted instead, with background = 2nd argument of
marker_line and transluency = 1st argument of marker_translucency.
Blending the arrow or plus sign would a bit pointless.

 For each modification, I closed Geany and opened it again to be sure it
 was using new settings in my .conf.

If you open the standard geany.conf in Geany, the changes are applied
immediately on Save. At least the highlighting.

-- 
E-gards: Jimmy
___
Geany-devel mailing list
Geany-devel@uvena.de
https://lists.uvena.de/cgi-bin/mailman/listinfo/geany-devel


Re: [Geany-devel] Why Geany doesn't use exactly what is set in marker_search?

2011-09-09 Thread Dimitar Zhekov
On Fri, 9 Sep 2011 20:44:53 +0300
Dimitar Zhekov dimitar.zhe...@gmail.com wrote:

 With the Markers Margin hidden, you don't have arrow or plus, so the
 background = 2nd argument of marker_line and transluency = 1st argument
 of marker_translucency.

The above for the line marker (arrow) only. The marked lines (plus)
have background = 2nd arguments of marker_mark and marker_translucency.

-- 
E-gards: Jimmy
___
Geany-devel mailing list
Geany-devel@uvena.de
https://lists.uvena.de/cgi-bin/mailman/listinfo/geany-devel


Re: [Geany-devel] New messages/output parsing proposition

2011-08-29 Thread Dimitar Zhekov
On Mon, 29 Aug 2011 11:16:05 +1000
Lex Trotman ele...@gmail.com wrote:

  Whats anon for? [...]
 
  To have it colored as error or warning. A bit of FX. :)
 
 Bet we get bug reports that users can't click on it :-)

I can trust them that much... :)

  Best ::= one of the matches defined as Best, which are unlikely to
  produce wrong results. Primary purpose: avoid matching against all
  filetype expressions on build.
 
 Thats easy to avoid, don't do it :)

Yes, it can be easily avoided by by writing the expressions to require
one of the known extensions for the file type, and classifying the
filename-line-column match as Good. So the Best becomes absolute.

  Only the regex associated with the command should be used, that
  is whatever is shown in the configuration GUI for the command.
 
  I know how the project / filetype / default hierarhy works, but
  should have been more clear:
 
  User regex for the file type ::= project, fallback filetype file
 
 Sorry whats a fallback filetype file? The hierarchy is project
 filetype setting, user filetype file setting, system filetype file
 setting, default (is currently blank).

The home filetype or the system filetype file.

What is the default (is currently blank)?.. I searched Geany for
global fallback expression(s) short time ago, but all I could find
was parse_compiler_error_line().

 I should have been clear that I think that the current behavior is
 wrong, it should be: if there is a regex use it, otherwise use some
 default fallback.

  The filetype independent (make) commands are the ones that might
  run into multiple languages. [...] Better to assume developers
  working with mixed languages are competent enough to select the
  right expressions and or them together.
 

I imagine myself navigating thru the build dialog, copy-pasting all
filetype expressions that can be relevant to the project, for every
project. And then changing all of them on each slightly different
outout... And then I'll finally sit back and say: There is nobody
to blameth, cause I brouth this on myself. :)

  Why even write a new parser then? With enough | separated patterns,
  even the current one will work just fine. It would be nice to have
  warn/anon/copy, but they are only extras.
 
 
 Well, I am coming to the conclusion after these discussions that you
 don't need to write a whole new parser (just saved you lots of work
 :), rather add the ability to use multiple occurrences of named
 captures to regexes.  Without that the | can't work.

With enough | expressions, anything will work. I'll can very long, but
a regex limit is 64K...

 Then if you really want the fun, the fallback when no regex is
 specified could be upgraded from the current hardcoded routine to use
 your multiple language search, best match, super dooper[1]
 technology, but with a preference to turn it on/off in case it
 produces unwanted results.

You saved me even more work. With a single regex defined in 54 system
filetypes, and 4 mentions of the message parsing in 1320 tracker items,
It odesn't look like anybody needs a new parser, much less anyone is
going to define complex new-style regex-es.

So I'd better head to more practical things: column support and
optional underlining for the Messages tab, and optional mark all Find
Usage matches.

BTW, how about closing 3039654, and writing some comment for 3156609?

   The list model will be removed. Default Messages regex-es plus the
   plugin defined ones should soffice.
 
  Plugins can't set regexes ATM because none of build.h is in the API,
  see other thread.  This is something to be re-visited.
 
  That's for the Messages only, On messages tab.
 
 I don't understand what you mean, sorry.

In the Message Window, the Messages tab on the left. It's parsing is
completely different from the Compiler tab.

-- 
E-gards: Jimmy
___
Geany-devel mailing list
Geany-devel@uvena.de
https://lists.uvena.de/cgi-bin/mailman/listinfo/geany-devel


Re: [Geany-devel] New messages/output parsing proposition

2011-08-28 Thread Dimitar Zhekov
On Sun, 28 Aug 2011 15:32:19 +1000
Lex Trotman ele...@gmail.com wrote:

 Whats anon for? I guess its nice to make the error red, but we can't
 click on it to go anywhere since it doesn't have a file so its
 different to all the other red lines.

To have it colored as error or warning. A bit of FX. :)

  2. The following expressions are attempted:
 
 If I understand it correctly then I strongly disagree with this
 section.  Trying several expressions and choosing a best match is
 going to make configuration very complex and cause unexpected
 interactions.  For example changing a command resulting in some
 slightly different output may cause unexpected changes in the best
 match giving wrong parses and confusion about where it is happening.

Best ::= one of the matches defined as Best, which are unlikely to
produce wrong results. Primary purpose: avoid matching against all
filetype expressions on build.

An inflexible matching with slightly different output will give you
the expected beaviour: worse parsing, or none at all.

 Only the regex associated with the command should be used, that
 is whatever is shown in the configuration GUI for the command.

I know how the project / filetype / default hierarhy works, but
should have been more clear:

User regex for the file type ::= project, fallback filetype file
User independent commands regex ::= project, fallback geany.conf

 Just use build_get_regex().

For compile, that's exactly what I'm going to do.

 Using a regex that is hidden from the UI or is
 not associated with the command is bound to cause confusion.

Currently msgwin_parse_compiler_error_line() attempts
filetypes_parse_error_message(), which uses build_get_regex(),
*and* then falls back to parse_compiler_error_line().

So in On compile, I'm reproducing the present logic, extended
with best match. The latter really seems like an overkill for a
single file, and I'll remove it.

 The filetype independent (make) commands are the ones that might
 run into multiple languages. [...] Better to assume developers
 working with mixed languages are competent enough to select the
 right expressions and or them together.

And always make the proper changes for a slightly different output.
Why even write a new parser then? With enough | separated patterns,
even the current one will work just fine. It would be nice to have
warn/anon/copy, but they are only extras.

 (?U) makes all matches non-greedy.

(?option) affects the text to the end of the current subpattern, or
to the entire pattern if specified outside a subpattern.

It may be better to set ungreedy by default, (?-U) is still available,
but I didn't want to modify the default POSIX-compatible behaviour.

  The list model will be removed. Default Messages regex-es plus the
  plugin defined ones should soffice.
 
 Plugins can't set regexes ATM because none of build.h is in the API,
 see other thread.  This is something to be re-visited.

That's for the Messages only, On messages tab.

-- 
E-gards: Jimmy
___
Geany-devel mailing list
Geany-devel@uvena.de
https://lists.uvena.de/cgi-bin/mailman/listinfo/geany-devel


Re: [Geany-devel] Git for plugins (was: Re: geany on github; why not?)

2011-08-25 Thread Dimitar Zhekov
On Thu, 25 Aug 2011 07:27:47 +0200
Frank Lanitz fr...@frank.uvena.de wrote:

 On Wed, 24 Aug 2011 23:56:52 +0200
 Jiří Techet tec...@gmail.com wrote:
 
  About plugins - I'd like to see them converted to git too but for me
  it's much less important. Plugins are usually one-man-show and require
  much less cooperation than Geany itself and their authors already have
  SVN access.
 
 Due the huge number of contributors at the plugins project and the,
 well quiet often broken build, a more decentralized process would be
 good for the plugins. [...] it would be might useful to make more usage
 of branches and only merge to trunk, when its apply correct and build is
 not broken and some other points of policy is met

Taking into account what Jiří said, perhaps the plugin developers
should try to follow the policy in the first place, before commiting to
svn? It's not like they are lacking hard disks and have to use a branch
for storage space.

-- 
E-gards: Jimmy
___
Geany-devel mailing list
Geany-devel@uvena.de
https://lists.uvena.de/cgi-bin/mailman/listinfo/geany-devel


Re: [Geany-devel] msgwin line and column position

2011-08-23 Thread Dimitar Zhekov
Hi,

There was no more comments in msgwindow double click, and my reasoning
was partially wrong - a big line number may be a result of some lines
being deleted by the user.

Because the patches affect the same code, I combined them here.

So, this -c version:

Parses an optional column # in the compiler messages.
Handles line/column 0 as 1, and too big line/column as EOF/EOLN.
Alters msgwin_goto_messages_file_line() not to pass invalid line # to
navqueue_goto_line() if we know for sure that the file name is valid.

I tested the patch in the last few days. It seems fine, and is quite
simple anyway.

Any other changes well have to wait after the 0.21 release.

-- 
E-gards: Jimmy
--- ./doc/geany.txt.orig	2011-07-30 14:02:32.0 +0300
+++ ./doc/geany.txt	2011-08-16 20:38:39.0 +0300
@@ -4057,18 +4057,20 @@
 Values that are set in the [build-menu] section will override those in this section.
 
 error_regex
-This is a GNU-style extended regular expression to parse a filename
-and line number from build output. If undefined, Geany will fall
+This is a GNU-style extended regular expression to parse a filename, a line
+number and an optional column from build output. If undefined, Geany will fall
 back to its default error message parsing.
 
-Only the first two matches will be read by Geany. Geany will look for
-a match that is purely digits, and use this for the line number. The
-remaining match will be used as the filename.
+Geany will read the first two (or three, if there is a third) matches, and check
+whether the first or second match is purely digits. If so, it'll try to use the
+matches as line [column] filename, or as filename line [column].
 
-*Example:* ``error_regex=(.+):([0-9]+):[0-9]+``
+*Example:* ``error_regex=([^:]+):([0-9]+):([0-9]+): |([^:]+):([0-9]+): ``
 
 This will parse a message such as:
 ``test.py:7:24: E202 whitespace before ']'``
+or (if the first part does not match) as:
+``test.py:7 E202 whitespace before ']'``
 
 **Build commands**
 
--- ./src/filetypes.c.orig	2011-08-14 14:52:08.0 +0300
+++ ./src/filetypes.c	2011-08-18 20:01:20.0 +0300
@@ -1510,13 +1510,14 @@
 
 
 gboolean filetypes_parse_error_message(GeanyFiletype *ft, const gchar *message,
-		gchar **filename, gint *line)
+		gchar **filename, gint *line, gint *col)
 {
 	gchar *regstr;
 	gchar **tmp;
 	GeanyDocument *doc;
 	regex_t *regex;
-	regmatch_t pmatch[3];
+	regmatch_t pmatch[4];
+	gint has_column;
 
 	if (ft == NULL)
 	{
@@ -1531,7 +1532,7 @@
 	regex = ft-priv-error_regex;
 
 	*filename = NULL;
-	*line = -1;
+	*line = *col = -1;
 
 	if (G_UNLIKELY(! NZV(regstr)))
 		return FALSE;
@@ -1547,35 +1548,48 @@
 	if (regexec(regex, message, G_N_ELEMENTS(pmatch), pmatch, 0) != 0)
 		return FALSE;
 
+	if (pmatch[2].rm_so == -1  pmatch[3].rm_so != -1)
+	{
+		pmatch[2].rm_so = pmatch[3].rm_so;
+		pmatch[2].rm_eo = pmatch[3].rm_eo;
+		has_column = 0;
+	}
+	else
+	{
+		has_column = pmatch[3].rm_so != -1;
+	}
+
 	if (pmatch[0].rm_so != -1  pmatch[1].rm_so != -1  pmatch[2].rm_so != -1)
 	{
-		gchar *first, *second, *end;
-		glong l;
+		gchar *match[3];
+		int line_idx;
 
-		first = get_regex_match_string(message, pmatch, 1);
-		second = get_regex_match_string(message, pmatch, 2);
-		l = strtol(first, end, 10);
-		if (*end == '\0')	/* first is purely decimals */
+		match[0] = get_regex_match_string(message, pmatch, 1);
+		match[1] = get_regex_match_string(message, pmatch, 2);
+		match[2] = has_column ? get_regex_match_string(message, pmatch, 3) : NULL;
+
+		if (utils_str_to_pos(match[0], line, TRUE) != NULL)	/* first is purely decimals */
 		{
-			*line = l;
-			g_free(first);
-			*filename = second;
+			line_idx = 0;
+			*filename = match[1 + has_column];
 		}
 		else
 		{
-			l = strtol(second, end, 10);
-			if (*end == '\0')
-			{
-*line = l;
-g_free(second);
-*filename = first;
-			}
+			line_idx = 1;
+			if (utils_str_to_pos(match[1], line, TRUE) != NULL)
+*filename = match[0];
 			else
-			{
-g_free(first);
-g_free(second);
-			}
+g_free(match[0]);
 		}
+
+		if (has_column)
+		{
+			if (*filename != NULL)
+utils_str_to_pos(match[line_idx + 1], col, TRUE);
+			g_free(match[line_idx + 1]);
+		}
+
+		g_free(match[line_idx]);
 	}
 	return *filename != NULL;
 }
--- ./src/filetypes.h.orig	2011-05-20 20:07:51.0 +0300
+++ ./src/filetypes.h	2011-08-15 19:38:35.0 +0300
@@ -205,6 +205,6 @@
 gboolean filetype_has_tags(GeanyFiletype *ft);
 
 gboolean filetypes_parse_error_message(GeanyFiletype *ft, const gchar *message,
-		gchar **filename, gint *line);
+		gchar **filename, gint *line, gint *col);
 
 #endif
--- ./src/highlighting.c.orig	2011-06-29 21:06:09.0 +0300
+++ ./src/highlighting.c	2011-08-18 19:52:31.0 +0300
@@ -332,16 +332,6 @@
 }
 
 
-static void convert_int(const gchar *int_str, gint *val)
-{
-	gchar *end;
-	gint v = strtol(int_str, end, 10);
-
-	if (int_str != end)
-		*val = v;

Re: [Geany-devel] Use of Scintilla word boundaries for word searches

2011-08-22 Thread Dimitar Zhekov
On Mon, 22 Aug 2011 14:43:35 +0200
Colomban Wendling lists@herbesfolles.org wrote:

  Uhm, I mean for FIF grep decides about the word boundaries, which may be
  different to GEANY_WORDCHARS and everything discussed here, no?
 
 Yeah, once a new definition. Though this one is, according to the manual:
 
  Word-constituent characters are letters, digits, and the underscore.
 
 And it doesn't include any non-ASCII characters in the algorithm, making
 e.g. word search hé match héhé (second byte of the first é being
 treat as a separator).

grep uses plain char and doesn't support UTF-8. But if your héhé
fits in an 8-bit code page, and you have the proper LC_CTYPE set, it
works. I checked this with cp1251 боза earlier when we discussed
word finding (but was 99% sure it'll work).

echo '@@боза@@' | grep -w '@боза@' works too, but echo 'а@боза@@' does
not, and neither does '9@...' or '_@...' . So it checks the characters
before and after the match for not being isalnum() or underscore.

-- 
E-gards: Jimmy
___
Geany-devel mailing list
Geany-devel@uvena.de
https://lists.uvena.de/cgi-bin/mailman/listinfo/geany-devel


Re: [Geany-devel] Use of Scintilla word boundaries for word searches

2011-08-22 Thread Dimitar Zhekov
On Mon, 22 Aug 2011 19:22:09 +0200
Colomban Wendling lists@herbesfolles.org wrote:

  grep uses plain char and doesn't support UTF-8. [...]
 
 ...but б@боза@@ will match (at least using UTF-8), [...]

Neither the character classes nor the upper/lower cases will work
properly if you feed an 8-bit char program with UTF-8. grep -i -w
produce lots of false positives and/or negatives, and so will the
[] sets. Except for the 8859-1 characters, of course.

-- 
E-gards: Jimmy
___
Geany-devel mailing list
Geany-devel@uvena.de
https://lists.uvena.de/cgi-bin/mailman/listinfo/geany-devel


Re: [Geany-devel] Use of Scintilla word boundaries for word searches

2011-08-20 Thread Dimitar Zhekov
On Sat, 20 Aug 2011 23:58:47 +1000
Lex Trotman ele...@gmail.com wrote:

 Can you point me to where Geany loads locale dependent wordchars and
 where it gets it from?

Scintilla does it... oh, wait. Neither scintilla nor scite can find the
word in ‘боза’, or even ‘boza’ (grep does, for 8-bit text). *Gee*.

On Sat, 20 Aug 2011 16:46:16 +0200
Colomban Wendling lists@herbesfolles.org wrote:

 Actually (as supposed in another mail), I guess that a word in
 Scintilla's opinion when doing a word search is everything non-empty
 between two whitespace characters, so we DO both.

Like the famous ...consists of sequences of non-blank characters
separated by blanks. :)

 My patch tries to use this definition of a word for search, and
 keeps the other (a sequence of wordchars) for symbol stuff.

Well, since using Find previous/next selection on a non-selected
g_new0(gchar still finds the next/previous g_new0 or gchar (depending
on the cursor position), and not the entire text, I guess it's all
right... OTOH, finding regcomp ( in (regcomp ( still doesn't
succeed. Guess I can't have it both ways.

-- 
E-gards: Jimmy
___
Geany-devel mailing list
Geany-devel@uvena.de
https://lists.uvena.de/cgi-bin/mailman/listinfo/geany-devel


  1   2   3   >