Что ж, это хорошая работа, которую вы обнаружили, что в эти дни на Гитхубе есть тумблуд.
Вы сможете найти встроенные опции, нажав Bundles
, затем Haskell
.В стандарте довольно мало Haskell.tmbundle
.Наиболее очевидно полезным является ... загрузить файл command-shift-r
или command-R
.Если вы написали модуль с окончанием .hs или .lhs, он ... открывает его в ghci.
(Говорили об интегрированном терминале в TextMate II, но кто знает? Одна досадная особенность неинтегрированного терминала заключается в том, что возникает искушение «перезагрузить», нажимая command-R, а не делая: r внутри ghci
; в некоторых безумиях будет развиваться, что у меня открыто 15 копий Терминала.)
Многие из приятных функций - это просто общие вещи TextMate, определяемые описанием языка, так что это может бытьхорошо, чтобы прочитать общее описание тонкостей TextMate.Например, если выделено несколько строк, команда- / комментирует их с помощью --
s;или, если они уже прокомментированы, раскомментируйте их.Я вместе взломал что-то для этого задолго до того, как понял, что он уже там, недостаточно внимательно изучив руководство.
Конечно, у всех есть привязки клавиш, и очень легко добавить свои собственные, чтобы запускать маленькие скрипты и вставлять маленькие фрагменты, гораздо больше, чем, скажем, в Emacs.
В разделе Bundles
нажмите Bundle Editor
и проверьте текст на предмет различных типов вещей.
Так, например, чтобы создать триггер табуляции, чтобы запустить прагму языкового расширения {-#LANGUAGE ... #-}
, где курсор находится в пространстве ...
, скопируйте Snippet
и подставьте
{-#LANGUAGE ${1}#-}
выбрав Activation: Tab Trigger
и (скажем) LANG
в качестве триггера.
Одна приятная вещь заключается в том, что все они являются сценариями оболочки, или же (как этот), частичными сценариями оболочки с некоторыми переменными TextMate, и вы можете написать их на своем предпочтительном языке.(Что касается комплекта Haskell, то я не могу больше говорить о Haskell, но о других комплектах я делаю.)
Подсветка синтаксиса на удивление звучит удивительно, но спотыкается о нескольких необычных расширениях, например "PackageImports ", синтаксис GADT, разметка для системы документации Haddock и некоторые другие странности.Я взломал свой собственный, но я нахожу формат файлов синтаксиса довольно непонятным, поэтому бесполезно отправлять вам копию.Haskell.tmbundle
был исправлен некоторыми знающими Хаскелерами за последние два или три года.Человек, который первым сделал это, просто изучал Haskell, и, например, он не составлял модули Haddock, но, с другой стороны, он, к счастью, был очень опытным и имел глубокие знания механизма TextMate.
Обратите внимание, что TextMate хранит исправления, которые вы вносите в Bundle Editor
довольно странным образом.Пакеты, которые поставляются с TextMate, например, C
, Ruby
, HTML
, LaTeX
и т. Д. Находятся в /Applications/Textmate.app/.../Bundles
.Те, что вы устанавливаете, находятся в /Library/Application\ Support/TextMate/Bundles
.Когда вы вносите поправки через Bundle Editor
, они сохраняются в вашем локальном ~/Library/Application\ Support/TextMate/Bundles.
Это имеет смысл, но немного сложнее и препятствует общедоступному улучшению пакета Haskell.(Один пакет, которым я делюсь с людьми, а не Haskell, я храню в самой последней, самой внешней директории в git revision, так что оригинал и мои поправки находятся вместе.)
Связка клавиш "Lookup on Hoogle" /опцион действует на выделенных условиях;Вот реплика для веб-сайта hayoo, который может искать использование подписи типа
echo "<meta http-equiv=\"refresh\" content=\"0;
http://holumbus.fh-wedel.de/hayoo/hayoo.html?query=${TM_SELECTED_TEXT:=$TM_CURRENT_WORD}\">"
Если вы установили Google, вы можете сделать локальный вызов в Google с помощью скрипта, подобного так:
hoogle --w --n=100 '${TM_SELECTED_TEXT:=$TM_CURRENT_WORD}'
выбор Сохранить: ничего, ввод: выделенный текст, или: слово, вывод: показать как HTML
Другие внесенные мной поправки в основном тривиальны, как фрагмент триггера табуляции для `{-# ЯЗЫК ... # -} или мои собственные странности.
Стоит упомянуть, что мне удалось интегрировать это исполняемый файл typeof
из Hackage, cabal install typeof
, который запускается в ghci для предполагаемой сигнатуры типа.У меня есть привязка ключа, чтобы показать выведенный тип как отображаемый бит HTML, но и вставить его.Это немного деликатно, но вот текст для средства отображения типов
#!/bin/bash
word=${TM_SELECTED_TEXT:-$TM_CURRENT_WORD}
module="${TM_FILEPATH}"
echo $word | typeof $module
, выбирающего Input: Selected Text
, Or: Line
;Output: Show as Tool Tip
, Activation : Key Equivalent
(затем выберите связывание клавиш, у меня control-option-command-j
) Аналогично, для вставки типа через typeof
создайте новый заголовок C (командный файл) и включите в него:
#!/bin/bash
word=${TM_SELECTED_TEXT:-$TM_CURRENT_WORD}
module="${TM_FILEPATH}"
echo $word | typeof $module | typeof_wordorder
# typeof_wordorder is the following hack compiled
# in my local ~/bin
# module Main where
# main = interact reword where
# reword :: String -> String
# reword xs =
# xs ++ (head . words . concat . lines $ xs)
Здесь typeof
и typeof_worderorder
- исполняемые файлы Haskell, первый установленный кабалой, второй - вышеупомянутый идиотизм, скомпилированный в моем локальном ~\bin
, чтобы обойти какую-то чепуху.Здесь вы должны выбрать Output : Insert as Snippet
Извините, я просто думаю о случайных вещах.Вы должны продолжать публиковать вопросы под этим заголовком, так как я думаю, что было бы целесообразно увидеть, как это может сбить с толку, а также то, что взламывает наши умные друзья из Haskeller, возможно, подумал.Я продолжаю иметь в виду поставить «развилку» моего tmbundle на github, но это не слишком увлекательно, и организация каталогов Bundle навсегда победит меня.