On Thu, 30 Sep 2010 13:23:58 +0100% Nick Treleaven nick.treleaven@btinternet.com wrote:
On Sat, 10 Jul 2010 21:48:35 +0400 Eugene Arshinov earshinov@gmail.com wrote:
Hi all.
I attach three patches:
- Keybindings to insert new line after/before current
...
- Automatically insert additional indentation in XML/HTML files if
previous line ends with an opening tag
I finally got round to replying to the other patches, sorry for the delay.
The drawback of the first patch is that I doubt it's so useful. I know Vi[m] provides shortcuts for these actions ('o' and 'O' in normal mode), but their necessity is questionable for me. I implemented this to ease XML editing with tag autocompletion turned on. Suppose you need to write to consequent <li>'s. Without this patch you need to press End+Enter after writing the first <li> to place the cursor where you need to start the second. With my patch, you only need to press one shortcut you can assign in Preferences > Keybindings :)
Maybe we could add these. BTW you could use utils_get_eol_char(). Also we already have sci_get_line_indent_position().
I missed this function… Updated patch attached.
The drawback of the third patch is that it's not completed. If user likes to leave HTML tags like <br> "unclosed", she would be disturbed by automatic indentation caused by my patch, so a check box in Preferences is desirable. I'll code it as soon as we decide this patch can go to trunk.
For HTML perhaps we could have a filetype pref for this.
What should it look like? I can't name this pref "autoindent" because it would be confusing if for XML and HTML it only controls the indentation after XML/HTML tags, not after braces in PHP/JS chunks. If I make the pref more specific (e.g., "xml-autoindent"), it won't probably be quite proper to insert such a specific member to GeanyFiletype struct.
Maybe it's more appropriate to add a check button near "Preferences > Editor > Indentation > Auto-indent mode" list? AFAIK (never used it), "Match braces" mode works only for braces languages and thus is already somewhat filetype-specific.
For the present, I attach an updated patch which doesn't insert indentation after "short" HTML tags. I also modified existing tag autocompletion code so that it doesn't check for HTML tags if current lexer is XML, not HTML. I slightly modified utils_find_open_xml_tag() in order to reuse it in my autoindentation code. Particularly I removed `check_tag' parameter and strange condition
else if (! check_tag && *cur == '>') break;
I'm not sure why this condition was needed there.
Best regards, Eugene.