Geany невероятно удобный редактор. Однако, и дома и на работе проявилась проблема, что когда размер файла увеличивается и начинаешь использовать фигурные скобки "{}", то ждешь до 5 секунд, пока скобки мигают. Видимо Geany пытается подсветить следующую скобку и пока ее ищет, система подвисает. Странно, последний процессор i7. Видимо дело в видео-карте. Не помогает использование автозавершения скобок. Оно работает только вне других скобок. Вариант с вложенностью "{{}}" не прокатит, внутри внешних "{}" новая скобка завершена автоматически не будет.
Данная проблема напрягает, когда быстро набираешь код и становится некомфортно использовать данный редактор. Заменил Geany на Sublime Text 2. К сожалению, недостаток последнего - это отсутствие списка функций в боковой панели. Список можно вызвать с помощью сочетания клавиш Ctrl+R, но только на время поиска.
Также, с трудом настроил цветовую схему, в которой мне удобно работать. В Geany я использовал немного модифицированную версию Vibrant-ink:
# # Copyright Jason Wilson <jason.willson(at)gmail(dot)com> # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, # MA 02110-1301, USA. # # License linked from Google Projects page: # http://dev.perl.org/licenses/ # # Ported to Geany by Matthew Brush <matt(at)geany(dot)org> # [theme_info] name=Vibrant-My description=Vibrant Ink Theme for Geany version=1.22.0 author=Jason Wilson <jason.willson(at)gmail(dot)com> url=http://code.google.com/p/geany-vibrant-ink-theme [named_styles] default=0xffffff;0x000000;false;false error=0xff80c0;0x000000;false;false # Editor styles #------------------------------------------------------------------------------- selection=0x8000ff;0x404040;false;true current_line=0x0080c0;0x333300;true;false brace_good=0xffffff;0x50AA15;true;false brace_bad=0xffffff;0xAA1515;true;false margin_line_number=0xe4e4e4;0x000000;false;false margin_folding=0x888a85;0x000000;false;false fold_symbol_highlight=0xffffff indent_guide=0xc0c0c0;;false;false caret=0xffffff;0x112435;false;false marker_line=0xbbbbbb;0x555753;false;false marker_search=0xffff00;0xffff00;false;false marker_mark=0xc00000;0x000000;false;false call_tips=0xc0c0c0;0xffffff;false;false white_space=0x424242;;true # Programming languages #------------------------------------------------------------------------------- comment=0xBC9458 comment_doc=0x772cb7;0x070707;false;false comment_line=comment comment_line_doc=comment_doc comment_doc_keyword=comment_doc,bold comment_doc_keyword_error=comment_doc,italic number=0xccff33 number_1=number number_2=number_1 type=0xffffff;;true;false class=type function=default parameter=function keyword=0xff6600;;true;false keyword_1=keyword keyword_2=0xdde93d;;true;false keyword_3=keyword_1 keyword_4=keyword_1 identifier=default identifier_1=identifier identifier_2=identifier_1 identifier_3=identifier_1 identifier_4=identifier_1 string=0x66ff00 string_1=string string_2=string_1 string_3=default string_4=default string_eol=0xcccccc;0x000000;false;false character=string_1 backtick=string_2 here_doc=string_2 scalar=string_2 label=default,bold preprocessor=0xdde93d;;true;false regex=number_1 operator=0xffcc00 decorator=string_1,bold other=default # Markup-type languages #------------------------------------------------------------------------------- tag=0xff6600;0x000000;false;false tag_unknown=0xffffff;0x8C0101;true;false tag_end=0xffffff;0x000000;false;false attribute=0x99cc99;0x000000;false;false attribute_unknown=0xffffff;0x000000;false;false value=0xffffff;0x000000;false;false entity=0xffffff;0x000000;false;false # Diff #------------------------------------------------------------------------------- line_added=0x339999;0x000000;false;false line_removed=0x808040;0x000000;false;false line_changed=0x99cc99;0x000000;false;false
В Sublime Text 2 собрал то, что меня "почти" устраивает на основе Sunburst:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>author</key> <string>Stanley Rost</string> <key>comment</key> <string>(π) Soryu, 2005</string> <key>name</key> <string>Sunburst</string> <key>settings</key> <array> <dict> <key>settings</key> <dict> <key>background</key> <string>#000000</string> <key>caret</key> <string>#A7A7A7</string> <key>foreground</key> <string>#F8F8F8</string> <key>invisibles</key> <string>#CAE2FB3D</string> <key>lineHighlight</key> <string>#FFFFFF0D</string> <key>selection</key> <string>#DDF0FF33</string> </dict> </dict> <dict> <key>name</key> <string>Comment</string> <key>scope</key> <string>comment</string> <key>settings</key> <dict> <key>fontStyle</key> <string>italic</string> <key>foreground</key> <string>#AEAEAE</string> </dict> </dict> <dict> <key>name</key> <string>Constant</string> <key>scope</key> <string>constant</string> <key>settings</key> <dict> <key>fontStyle</key> <string>bold</string> <key>foreground</key> <string>#FF0000</string> </dict> </dict> <!-- loadAssoc() --> <dict> <key>name</key> <string>Entity</string> <key>scope</key> <string>entity</string> <key>settings</key> <dict> <key>fontStyle</key> <string>bold</string> <key>foreground</key> <string>#FFFFFF</string> </dict> </dict> <!-- ->, @since, if - #E28964, #808040 --> <dict> <key>name</key> <string>Keyword</string> <key>scope</key> <string>keyword</string> <key>settings</key> <dict> <key>fontStyle</key> <string></string> <key>foreground</key> <string>#DAD085</string> </dict> </dict> <!-- public function --> <dict> <key>name</key> <string>Storage</string> <key>scope</key> <string>storage</string> <key>settings</key> <dict> <key>fontStyle</key> <string></string> <key>foreground</key> <string>#99CF50</string> </dict> </dict> <!-- string - #65B042 --> <dict> <key>name</key> <string>String</string> <key>scope</key> <string>string</string> <key>settings</key> <dict> <key>fontStyle</key> <string></string> <key>foreground</key> <string>#66ff00</string> </dict> </dict> <dict> <key>name</key> <string>Support</string> <key>scope</key> <string>support</string> <key>settings</key> <dict> <key>fontStyle</key> <string></string> <key>foreground</key> <string>#9B859D</string> </dict> </dict> <dict> <key>name</key> <string>Variable</string> <key>scope</key> <string>variable</string> <key>settings</key> <dict> <key>fontStyle</key> <string>bold</string> <key>foreground</key> <string>#dde93d</string> </dict> </dict> <dict> <key>name</key> <string>Invalid – Deprecated</string> <key>scope</key> <string>invalid.deprecated</string> <key>settings</key> <dict> <key>fontStyle</key> <string>italic underline</string> <key>foreground</key> <string>#FD5FF1</string> </dict> </dict> <dict> <key>name</key> <string>Invalid – Illegal</string> <key>scope</key> <string>invalid.illegal</string> <key>settings</key> <dict> <key>background</key> <string>#562D56BF</string> <key>foreground</key> <string>#FD5FF1</string> </dict> </dict> <dict> <key>name</key> <string>-----------------------------------</string> <key>settings</key> <dict/> </dict> <dict> <key>name</key> <string>♦ Embedded Source (Bright)</string> <key>scope</key> <string>text source</string> <key>settings</key> <dict> <key>background</key> <string>#B1B3BA08</string> </dict> </dict> <dict> <key>name</key> <string>♦ Entity inherited-class</string> <key>scope</key> <string>entity.other.inherited-class</string> <key>settings</key> <dict> <key>fontStyle</key> <string>italic</string> <key>foreground</key> <string>#9B5C2E</string> </dict> </dict> <dict> <key>name</key> <string>♦ String embedded-source</string> <key>scope</key> <string>string.quoted source</string> <key>settings</key> <dict> <key>fontStyle</key> <string></string> <key>foreground</key> <string>#DAEFA3</string> </dict> </dict> <dict> <key>name</key> <string>♦ String constant</string> <key>scope</key> <string>string constant</string> <key>settings</key> <dict> <key>foreground</key> <string>#DDF2A4</string> </dict> </dict> <dict> <key>name</key> <string>♦ String.regexp</string> <key>scope</key> <string>string.regexp</string> <key>settings</key> <dict> <key>foreground</key> <string>#E9C062</string> </dict> </dict> <dict> <key>name</key> <string>♦ String.regexp.«special»</string> <key>scope</key> <string>string.regexp constant.character.escape, string.regexp source.ruby.embedded, string.regexp string.regexp.arbitrary-repitition</string> <key>settings</key> <dict> <key>foreground</key> <string>#CF7D34</string> </dict> </dict> <dict> <key>name</key> <string>♦ String variable</string> <key>scope</key> <string>string variable</string> <key>settings</key> <dict> <key>foreground</key> <string>#8A9A95</string> </dict> </dict> <!-- strlen() --> <dict> <key>name</key> <string>♦ Support.function</string> <key>scope</key> <string>support.function</string> <key>settings</key> <dict> <key>fontStyle</key> <string></string> <key>foreground</key> <string>#FFFFFF</string> </dict> </dict> <dict> <key>name</key> <string>♦ Support.constant</string> <key>scope</key> <string>support.constant</string> <key>settings</key> <dict> <key>fontStyle</key> <string></string> <key>foreground</key> <string>#CF6A4C</string> </dict> </dict> <dict> <key>name</key> <string>c C/C++ Preprocessor Line</string> <key>scope</key> <string>meta.preprocessor.c</string> <key>settings</key> <dict> <key>foreground</key> <string>#8996A8</string> </dict> </dict> <dict> <key>name</key> <string>c C/C++ Preprocessor Directive</string> <key>scope</key> <string>meta.preprocessor.c keyword</string> <key>settings</key> <dict> <key>foreground</key> <string>#AFC4DB</string> </dict> </dict> <dict> <key>name</key> <string>j Entity Name Type</string> <key>scope</key> <string>entity.name.type</string> <key>settings</key> <dict> <key>fontStyle</key> <string>underline</string> </dict> </dict> <dict> <key>name</key> <string>j Cast</string> <key>scope</key> <string>meta.cast</string> <key>settings</key> <dict> <key>fontStyle</key> <string>italic</string> <key>foreground</key> <string>#676767</string> </dict> </dict> <dict> <key>name</key> <string>✘ Doctype/XML Processing</string> <key>scope</key> <string>meta.sgml.html meta.doctype, meta.sgml.html meta.doctype entity, meta.sgml.html meta.doctype string, meta.xml-processing, meta.xml-processing entity, meta.xml-processing string</string> <key>settings</key> <dict> <key>foreground</key> <string>#494949</string> </dict> </dict> <dict> <key>name</key> <string>✘ Meta.tag.«all»</string> <key>scope</key> <string>meta.tag, meta.tag entity</string> <key>settings</key> <dict> <key>foreground</key> <string>#89BDFF</string> </dict> </dict> <dict> <key>name</key> <string>✘ Meta.tag.inline</string> <key>scope</key> <string>source entity.name.tag, source entity.other.attribute-name, meta.tag.inline, meta.tag.inline entity</string> <key>settings</key> <dict> <key>foreground</key> <string>#E0C589</string> </dict> </dict> <dict> <key>name</key> <string>✘ Namespaces</string> <key>scope</key> <string>entity.name.tag.namespace, entity.other.attribute-name.namespace</string> <key>settings</key> <dict> <key>foreground</key> <string>#E18964</string> </dict> </dict> <dict> <key>name</key> <string>§ css tag-name</string> <key>scope</key> <string>meta.selector.css entity.name.tag</string> <key>settings</key> <dict> <key>foreground</key> <string>#CDA869</string> </dict> </dict> <dict> <key>name</key> <string>§ css:pseudo-class</string> <key>scope</key> <string>meta.selector.css entity.other.attribute-name.tag.pseudo-class</string> <key>settings</key> <dict> <key>foreground</key> <string>#8F9D6A</string> </dict> </dict> <dict> <key>name</key> <string>§ css#id</string> <key>scope</key> <string>meta.selector.css entity.other.attribute-name.id</string> <key>settings</key> <dict> <key>foreground</key> <string>#8B98AB</string> </dict> </dict> <dict> <key>name</key> <string>§ css.class</string> <key>scope</key> <string>meta.selector.css entity.other.attribute-name.class</string> <key>settings</key> <dict> <key>foreground</key> <string>#9B703F</string> </dict> </dict> <dict> <key>name</key> <string>§ css property-name:</string> <key>scope</key> <string>support.type.property-name.css</string> <key>settings</key> <dict> <key>foreground</key> <string>#C5AF75</string> </dict> </dict> <dict> <key>name</key> <string>§ css property-value;</string> <key>scope</key> <string>meta.property-group support.constant.property-value.css, meta.property-value support.constant.property-value.css</string> <key>settings</key> <dict> <key>foreground</key> <string>#F9EE98</string> </dict> </dict> <dict> <key>name</key> <string>§ css @at-rule</string> <key>scope</key> <string>meta.preprocessor.at-rule keyword.control.at-rule</string> <key>settings</key> <dict> <key>foreground</key> <string>#8693A5</string> </dict> </dict> <dict> <key>name</key> <string>§ css additional-constants</string> <key>scope</key> <string>meta.property-value support.constant.named-color.css, meta.property-value constant</string> <key>settings</key> <dict> <key>foreground</key> <string>#DD7B3B</string> </dict> </dict> <dict> <key>name</key> <string>§ css constructor.argument</string> <key>scope</key> <string>meta.constructor.argument.css</string> <key>settings</key> <dict> <key>foreground</key> <string>#8F9D6A</string> </dict> </dict> <dict> <key>name</key> <string>⎇ diff.header</string> <key>scope</key> <string>meta.diff, meta.diff.header</string> <key>settings</key> <dict> <key>background</key> <string>#0E2231</string> <key>fontStyle</key> <string>italic</string> <key>foreground</key> <string>#F8F8F8</string> </dict> </dict> <dict> <key>name</key> <string>⎇ diff.deleted</string> <key>scope</key> <string>markup.deleted</string> <key>settings</key> <dict> <key>background</key> <string>#420E09</string> <key>foreground</key> <string>#F8F8F8</string> </dict> </dict> <dict> <key>name</key> <string>⎇ diff.changed</string> <key>scope</key> <string>markup.changed</string> <key>settings</key> <dict> <key>background</key> <string>#4A410D</string> <key>foreground</key> <string>#F8F8F8</string> </dict> </dict> <dict> <key>name</key> <string>⎇ diff.inserted</string> <key>scope</key> <string>markup.inserted</string> <key>settings</key> <dict> <key>background</key> <string>#253B22</string> <key>foreground</key> <string>#F8F8F8</string> </dict> </dict> <dict> <key>name</key> <string>--------------------------------</string> <key>settings</key> <dict/> </dict> <dict> <key>name</key> <string>Markup: Italic</string> <key>scope</key> <string>markup.italic</string> <key>settings</key> <dict> <key>fontStyle</key> <string>italic</string> <key>foreground</key> <string>#E9C062</string> </dict> </dict> <dict> <key>name</key> <string>Markup: Bold</string> <key>scope</key> <string>markup.bold</string> <key>settings</key> <dict> <key>fontStyle</key> <string>bold</string> <key>foreground</key> <string>#E9C062</string> </dict> </dict> <dict> <key>name</key> <string>Markup: Underline</string> <key>scope</key> <string>markup.underline</string> <key>settings</key> <dict> <key>fontStyle</key> <string>underline</string> <key>foreground</key> <string>#E18964</string> </dict> </dict> <dict> <key>name</key> <string>Markup: Quote</string> <key>scope</key> <string>markup.quote</string> <key>settings</key> <dict> <key>background</key> <string>#FEE09C12</string> <key>fontStyle</key> <string>italic</string> <key>foreground</key> <string>#E1D4B9</string> </dict> </dict> <dict> <key>name</key> <string>Markup: Heading</string> <key>scope</key> <string>markup.heading, markup.heading entity</string> <key>settings</key> <dict> <key>background</key> <string>#632D04</string> <key>fontStyle</key> <string></string> <key>foreground</key> <string>#FEDCC5</string> </dict> </dict> <dict> <key>name</key> <string>Markup: List</string> <key>scope</key> <string>markup.list</string> <key>settings</key> <dict> <key>foreground</key> <string>#E1D4B9</string> </dict> </dict> <dict> <key>name</key> <string>Markup: Raw</string> <key>scope</key> <string>markup.raw</string> <key>settings</key> <dict> <key>background</key> <string>#B1B3BA08</string> <key>fontStyle</key> <string></string> <key>foreground</key> <string>#578BB3</string> </dict> </dict> <dict> <key>name</key> <string>Markup: Comment</string> <key>scope</key> <string>markup comment</string> <key>settings</key> <dict> <key>fontStyle</key> <string>italic</string> <key>foreground</key> <string>#F67B37</string> </dict> </dict> <dict> <key>name</key> <string>Markup: Separator</string> <key>scope</key> <string>meta.separator</string> <key>settings</key> <dict> <key>background</key> <string>#242424</string> <key>foreground</key> <string>#60A633</string> </dict> </dict> <dict> <key>name</key> <string>Log Entry</string> <key>scope</key> <string>meta.line.entry.logfile, meta.line.exit.logfile</string> <key>settings</key> <dict> <key>background</key> <string>#EEEEEE29</string> </dict> </dict> <dict> <key>name</key> <string>Log Entry Error</string> <key>scope</key> <string>meta.line.error.logfile</string> <key>settings</key> <dict> <key>background</key> <string>#751012</string> </dict> </dict> </array> <key>uuid</key> <string>C8C58F9A-35FE-44A4-9BC2-2F3C343DC81D</string> </dict> </plist>
Заключение
Надеюсь в новой версии Geany проблема мелькающих скобок будет исчерпана. К тому времени, видимо я уже привыкну к новому редактору и уже буду думать о том, стоит ли переезжать обратно на старый.