NilColor

Guess what? You're on my site!

Code-folding. TextMate.

without comments

Есть такая штука – сворачивание кода. Можно ее любить, можно не любить. Я к ней отношусь по разному. То, что обычно предлагают разные редакторы (и TextMate не исключение) – сворачивание по разного рода конструкциям языка, типа пар {}, <div></div> и т.д. – меня не устраивало и я просто этим не пользовался. И всегда хотелось (ну не всегда…) свернуть код так, как хочется тебе… Но обычно это не настраивалось и/или возиться было лень.

И тут я читая статейку о том, как можно расширять модель User в Django увидел реализацию того, как человек реализовал code-folding в vim (!) И мне стало… запершило в общем ;) В vim можно, а в TextMate низя?! Да фиг вам! И полез читать то, как все эти foldingStartMarker/foldingStopMarker в TextMate устроены. Небольшой поиск и пинок из списка рассылки ( ;) ) указали верный путь. И вот результат.

  • В описании языка (Python в моем случае) переопределяем foldingStartMarker/foldingStopMarker с тех, что были на:
    foldingStartMarker = '^#\s[\w\s]*(#\s{{{)$'; и
    foldingStopMarker = '^#\s}}}$';
  • Создаем новую команду (Command) в бандле (bundle) питона или в своем, если есть:

    #!/usr/bin/env ruby
    # just to remind you of some useful environment variables
    # see Help / Environment Variables for the full list
    $: << ENV['TM_SUPPORT_PATH'] + '/lib'
    require 'escape'
    s = STDIN.read
    if s.empty? then
        print "# fold comment here # {{{\n\n# }}}"
    elsif ENV.has_key? 'TM_SELECTED_TEXT'
        print "# ${1:fold comment here} # {{{\n#{e_sn s}\n# }}}\n"
    else
        print "# hmm... not sure what is this... # {{{\n#{e_sn s}\n# }}}\n"
    end
    
  • параметры команды:

    • Input: Selected Text or Line
    • Output: Insert as Snippet
    • Scope Selector: source.python (это уж как хотите…)
  • Назначаем на эту команду шорткат по вкусу и вперед.

Меня устраивает/нравится. Может я даже это улучшу, но как – пока не знаю.

P.S.
Как и положено: сие творение плод моей мысли. Если оно что-то вам сделает не так – я не виноват. Совсем. И не надо жаловаться :)

Ну и на дорожку – скриншот. Как оно есьм у меня:
Code-folding sample


P.P.S
Просьба: если кто знает хороший WordPress-плагин для обработки постов/комментов в формате Markdown – дайте знать… тот что есть мягко говоря странен… а php я почти забыл :)

Written by NilColor

December 11th, 2007 at 1:08 pm

Leave a Reply