我是 mac 新手,我正在用我需要的所有程序设置我的计算机,其中之一是 Haskell。
令我惊讶的是,OS X 的 Haskell 平台与 Windows 中的不同(那里有一个基于平台安装的 GUI 编辑器 - winGHiC)。环顾四周后,我发现这个编辑器 TextMate 应该与 Haskell 兼容,但我发现设置 Haskell Bundle 非常复杂。为了它。
我已经下载并安装了以下内容:
有没有人熟悉如何让它工作?详细的逐步解释对我来说意义重大,就像我说的,自从我第一次使用 OS X 以来,我只有 1 天。
谢谢一堆。
最佳答案
好吧,您发现这些天 tmbundle 在 Github 上是一件好事。
您应该可以通过单击 Bundles
找到内置选项。 ,然后 Haskell
.标准中很少有Haskell.tmbundle
.最明显有用的是...加载文件command-shift-r
或 command-R
.如果你编写了一个以 .hs 或 .lhs 结尾的模块,它......在 ghci 中打开它。
(有一些关于 TextMate II 中集成终端的讨论,但谁知道呢?非集成终端的一个令人讨厌的功能是,人们很想通过单击 command-R 而不是通过在 ghci
中执行 :r 来“重新加载”。 ;在某些狂热情况下,我会打开 15 个终端副本。)
许多不错的功能只是一般的 TextMate 东西,由语言描述决定,因此阅读 TextMate 细节的一般描述可能会很好。例如,如果多行被高亮显示,则 command-/用 --
将它们注释掉。 s;或者,如果它们已被评论,则取消评论它们。早在我意识到它已经存在之前,我已经拼凑了一些东西来做到这一点,因为没有仔细研究手册。
当然,一切都有键绑定(bind),而且很容易添加自己的键来运行小脚本和插入小片段,比在 Emacs 中要多得多,比如说。
下 Bundles
点击 Bundle Editor
并检查文本中的不同类型。
因此,例如,使选项卡触发器启动语言扩展编译指示 {-#LANGUAGE ... #-}
光标所在的空间...
复制一份 Snippet
并替换
{-#LANGUAGE ${1}#-}
选择
Activation: Tab Trigger
,和(比如说)LANG
作为触发器。一件好事是它们都是 shell 脚本,或者(像这个)带有一些 TextMate 变量的部分 shell 脚本,您几乎可以用自己喜欢的语言编写它们。 (对于 Haskell 捆绑包,我不再有任何 Haskell 捆绑包可言,但对于其他捆绑包,我有。)
语法高亮出人意料的好,但会跳过一些花哨的扩展,例如"PackageImports"、GADT 语法、Haddock 文档系统的标记以及其他一些奇怪的东西。我已经破解了我自己的,但我发现语法文件的格式非常难以理解,因此向您发送副本是没有用的。
Haskell.tmbundle
在过去的两三年里,一些知识渊博的 Haskellers 对它进行了修改。第一个制作它的人只是在学习 Haskell,并没有例如组成 Haddocked 模块,但另一方面,他似乎很幸运,他非常熟练并且对 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 上查找”键绑定(bind)/选项作用于突出显示的术语;这是 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:
hoogle --w --n=100 '${TM_SELECTED_TEXT:=$TM_CURRENT_WORD}'
选择保存:无,输入:所选文本,或:Word,输出:显示为 HTML
我所做的其他修正大多是微不足道的,比如`{-#LANGUAGE ... #-} 的选项卡触发器片段或我自己的怪癖。
值得一提的是,我设法整合了
typeof
来自 Hackage 的可执行文件,cabal install typeof
,它运行到 ghci 以获取推断的类型签名。我有一个键绑定(bind)来将推断类型显示为显示的 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 ,我的是 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 可执行文件,第一个是 cabal 安装的,第二个是上面注释的白痴,编译在我的本地 ~\bin
避开一些逃避的废话。这里应该选择Output : Insert as Snippet
对不起,我只是在想一些随机的事情。你应该继续在这个标题下发布问题,因为我认为值得看看一个人可能会如何绊倒,以及我们更聪明的 Haskeller friend 可能想到了什么。我一直想把我的 tmbundle 的“ fork ”放在 github 上,但这并不太令人兴奋,而且 Bundle 目录的组织永远打败了我。
关于macos - 在 Mac OS X 上为 Haskell 编程设置 TextMate,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5682339/