Ответ 1
Хорошо, хорошо, что вы обнаружили, что в настоящее время в Гитбуте находится Трамвай.
Вы можете найти встроенные параметры, нажав Bundles
, затем Haskell
. В стандарте Haskell.tmbundle
довольно мало. Наиболее очевидно полезным является... загрузить файл command-shift-r
или command-R
. Если вы написали модуль с окончанием .hs или .lhs, он... откроет его в ghci.
(В TextMate II было несколько разговоров о встроенном терминале, но кто знает? Одна из неприятных особенностей неинтегрированного терминала заключается в том, что у вас возникает соблазн "перезагрузить", щелкнув команду-R, а не делая: r внутри ghci
, в некоторых бешенствах будет развиваться то, что у меня есть 15 копий Terminal open.)
Многие из приятных функций - это просто общие вещи TextMate, определяемые описанием языка, поэтому было бы полезно прочитать общее описание тонкостей TextMate. Например, если несколько строк высокоэластичны, тогда команда/комментирует их с помощью --
s; или, если они уже прокомментированы, раскоментирует их. Я собрал что-то для этого, задолго до того, как понял, что он уже существует, недостаточно внимательно изучив руководство.
У всех есть привязки клавиш, конечно, и очень легко добавить свои собственные, чтобы запускать маленькие скрипты и вставлять небольшие фрагменты, гораздо более, чем в Emacs.
В Bundles
нажмите Bundle Editor
и просмотрите текст для разных вещей.
Так, например, чтобы создать триггер табуляции, чтобы начать расширение языка pragma {-#LANGUAGE ... #-}
, где курсор находится в пространстве ...
, сделайте копию Snippet
и замените
{-#LANGUAGE ${1}#-}
выберите Activation: Tab Trigger
и (скажем) LANG
как триггер.
Самое приятное, что все скрипты оболочки, а также (как этот) частичные сценарии оболочки с некоторыми переменными TextMate, и вы можете в значительной степени написать их на своем собственном предпочтительном языке. (Для пакета Haskell у меня нет никаких Haskell, о которых можно говорить больше, но для других пакетов я делаю.)
Подсветка синтаксиса удивительно звучит, но срабатывает над несколькими причудливыми расширениями, например. "PackageImports", синтаксис GADT, разметка для системы документации Haddock и некоторые другие странности. Я взломал свой собственный, но формат файлов синтаксиса довольно непонятен, поэтому бесполезно отправлять вам копию. Haskell.tmbundle
был исправлен некоторыми знающими Haskellers за последние два или три года. Человек, который впервые сделал это, просто изучал Haskell и не имел, например, состоящий из отцепившихся модулей, но, с другой стороны, он, к счастью, к счастью, был очень опытным и имел глубокое знание механизма 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, поэтому оригинал и мои исправления вместе.)
"Поиск по Hoogle" keybinding/option действует на выделенные термины; здесь реплика для сайта hayoo, которая может искать использование подписи типа
echo "<meta http-equiv=\"refresh\" content=\"0;
http://holumbus.fh-wedel.de/hayoo/hayoo.html?query=${TM_SELECTED_TEXT:=$TM_CURRENT_WORD}\">"
Если вы устанавливаете hoogle, вы можете сделать локальный вызов hoogle с помощью script следующим образом:
hoogle --w --n=100 '${TM_SELECTED_TEXT:=$TM_CURRENT_WORD}'
выберите "Сохранить": "Ничего", "Ввод: выбранный текст" или "Слово", "Вывод": Показать как HTML
Другие исправления, которые я сделал, в основном тривиальны, например, фрагмент триггера tab для `{- # LANGUAGE... # -} или других эксцентриситетов.
Стоит упомянуть, что мне удалось интегрировать исполняемый файл 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
(затем выберите keybinding, my - 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
Извините, я просто думаю о случайных вещах. Вы должны продолжать публиковать вопросы по этому разделу, так как я думаю, было бы полезно посмотреть, как можно было бы разобраться, но и то, что, возможно, подумали наши умные друзья Хаскеллера. Я сохраняю смысл ставить "вилку" моего tmbundle на github, но это не слишком захватывающе, и организация каталогов Bundle навсегда побеждает меня.