Code-folding. TextMate.
Есть такая штука – сворачивание кода. Можно ее любить, можно не любить. Я к ней отношусь по разному. То, что обычно предлагают разные редакторы (и 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.
Как и положено: сие творение плод моей мысли. Если оно что-то вам сделает не так – я не виноват. Совсем. И не надо жаловаться :)
Ну и на дорожку – скриншот. Как оно есьм у меня:

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


