[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