[Geany-Users] [patch] Improved brackets completion

Pavel Roschin roshin at xxxxx
Sat Apr 6 05:32:29 UTC 2013



Sat, 6 Apr 2013 12:30:56 +1100 сообщение от Lex Trotman
<elextr at gmail.com>:

> Hi again,
> 
> After a *quick* look at your code, some more comments below.
> 
> 
> On 6 April 2013 06:04, Pavel Roschin <roshin at scriptumplus.ru> wrote:
> 
> > Hello!
> >
> > I'm currently working on patch (not plugin) that may improve current
> > brackets auto-closing. Patch is under construction but I hope for
> > feedback - may be you are interesting in some on those features in
> > geany and may be you have some ideas how to do it better.
> >
> > Already implemented features. To use it all, enable all brackets
> > completion in preferences.
> >
> > * auto-complete second char for: {, [, (, ", ' as geany does
> > (rewritten logic)
> > * disable brackets auto-completion inside strings and comments
> > * delete second completed char if you pressed BackSpace
> >
> 
> To be clear, actually deletes *both* the opening and closing, makes
> more sense.

Yes it is, as discussed in IRC

> > * suppress inserting one char twice (if you type "{}" you will get
> >   "{}", not "{}}")
> > * wrap selected text into brackets instead of removing selection
> >   (select text and type "(" or ")" to wrap selection into "()")
> > * keep selection in cause of wrapping
> > * for C-like languages wrapping selection into "{}" makes
> >   auto-indentation (select text and type "{" or "}" - text will be
> >   wrapped and indented)
> > * {}-wrapper moves cursor to beginning (before first "{"
> > * for C-like languages to insert {}-block you do not need to select
> >   text precisely: geany detects boundaries automatically, just
> > ensure that selection covers lines you need to indent (works like
> > TAB indentation)
> > * fix auto-indent inside {} for C-like languages (makes full indent
> > for this block)
> > * auto-close functions ("sin(|" -> "sin(|);") with double-chars
> >   suppression (for C only)
> >
> 
> Why are you putting a semicolon? that leaves characters to delete
> when the user is trying to type "if( getc() == 'a'  )return" or
> "sin(x)+cos(y)". The assumption that a function call is the end of a
> statement is a bad one.

It's more clewer:)
if( getc() == 'a') completes only (-s and '-s
sin(x)+cos(y)
what actually happens:
type "sin(" -> sin(|);
type "x)+" -> sin(x)+|;
type "cos(" -> sin(x)+cos(|);
type "y);" -> sin(x)+cos(y);|

Here quote suppressor and auto-closer works.

> >
> > Patch itself and planning features you will find on my github:
> > https://github.com/scriptum/geany-patches/
> >
> > I also planning to move all brackets logic from editor_notify to
> > GTK's key-press-event because of lack of features in editor_notify
> > events. Is it possible? I tried it and seems that it works fine...
> >
> 
> What do you need that you don't currently have in notify?

BackSpace, Shift. Also there is selection hack due to when you get
notify you have selection disappeared.

-- 
Pavel aka RPG


More information about the Users mailing list