[英]Setting up TextMate for Haskell programming on Mac OS X
我是mac新手,我正在使用我需要的所有程序進行計算機設置,其中一個是Haskell。
令我驚訝的是,OS X的Haskell平台與Windows不同(在平台安裝上有一個GUI編輯器 - winGHiC)。 看了很多之后,我發現這個編輯器TextMate應該與Haskell兼容,但我發現為它設置Haskell Bundle非常復雜。
我已經下載並安裝了以下內容:
是否有人熟悉如何使其工作? 這對我來說意味着一個詳細的逐步解釋,就像我說的那樣,自從我第一次使用OS X以來,我只有一天。
謝謝一堆。
好吧,你發現這些日子里有關於Github的tmbundle是好事。
您應該可以通過單擊Bundles
,然后單擊Haskell
找到內置選項。 標准的Haskell.tmbundle
中相當少。 最明顯有用的是... load file command-shift-r
或command-R
。 如果你已經寫了一個結尾為.hs或.lhs的模塊,那么......在ghci中打開它。
(在TextMate II中有一些關於集成終端的討論,但是誰知道呢?非集成終端的一個令人討厭的特性是,通過單擊命令-R而不是通過執行以下操作來“重新加載”:r inside ghci
; in我會開發15個終端打開的瘋狂。)
許多不錯的功能只是一般TextMate的東西,由語言描述決定,所以閱讀TextMate細節的一般描述可能會很好。 例如,如果幾行highlighed,然后命令- /評論他們與--
S; 或者,如果它們已被評論,則取消評論它們。 在我意識到它已經存在之前,我已經把一些東西一起砍掉了,但是我沒有仔細研究過這本手冊。
當然,一切都有鍵綁定,並且很容易添加自己的腳本來運行小腳本並插入一些小片段,比Emacs更多。
在Bundles
單擊Bundle Editor
並檢查不同類型的文本。
因此,例如,要創建一個制表符觸發器來啟動語言擴展pragma {-#LANGUAGE ... #-}
,其中光標位於空格中...
制作一個Snippet
和替換的副本
{-#LANGUAGE ${1}#-}
選擇Activation: Tab Trigger
,並(例如) LANG
作為觸發器。
一個好處是它們都是shell腳本,或者(就像這一個)部分shell腳本和一些TextMate變量,你幾乎可以用自己喜歡的語言編寫它們。 (對於Haskell包,我沒有任何Haskell可以說的,但對於我做的其他包。)
語法高亮顯然是令人驚訝的聲音,但跳過一些奇特的擴展,例如“PackageImports”,GADT語法,Haddock文檔系統的標記,以及其他一些奇怪的東西。 我已經自己攻擊了,但是我發現語法文件的格式非常難以理解,所以發送副本沒用。 該Haskell.tmbundle
在過去的兩三年了仔細的校勘一些知識淵博Haskellers。 最初制作Haskell的人只是學習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”鍵綁定/選項對突出顯示的術語起作用; 這是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用於推斷類型簽名。 我有一個鍵綁定,以顯示推斷類型為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可執行文件,第一個cabal安裝,第二個是上面評論的白痴,在我的本地編譯~\\bin
來繞過一些逃避廢話。 在這里,您應該選擇Output : Insert as Snippet
對不起,我只想到隨意的事情。 你應該繼續在這個標題下發帖提問,因為我認為值得看看一個人如何絆倒,還有我們聰明的Haskeller朋友可能會想到的。 我一直意味着把我的tmbundle的'fork'放在github上,但它並不太令人興奮,而Bundle目錄的組織永遠會讓我失望。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.