Vim脚本之Haskell卷

最近常写Haskell代码, 苦于vim本身ftplugin除了语法加亮处没什么特別的功能。 深感其縮进功能欠佳。在其它语言中用Tab, >>, << 习惯了(我是TAB派的,讨厌空格作缩进)。 Haskell虽是缩进决定結构的,但不像Python,TAB作缩进将会变得很hässlich(貌似ghc本身的代码里也有许多Tab?)。 故自己写了一些脚本,使TAB不再是制表符,两是智能的缩进。先写这么多,明天再加其它feature autocmd  FileType  haskell call  HaskellMode()

function  HaskellMode()
        "set shiftwidth=1
        set  autoindent
        set  tabstop =8
        set  expandtab
        imap  < silent > < TAB >  < C-R > =HaskellTab()< CR >
        "map o o<TAB>
        "map O O<TAB>
        call  matchadd ( "ERROR" , " // t" )
endfunction

function  HaskellTab()
        if  line ( "." )  ==  1
                return  ""
        endif
        let  letzte_zeile =  getline ( line( "." )  -  1 )
        let  cursor_spalt =  virtcol ( "." )
        let  springen_nach =  matchend ( letzte_zeile, "[ // t] // +" , cursor_spalt)  
        if  springen_nach <=  cursor_spalt
                "" schon am rechten Rand
                return  ""
        else
                return  repeat ( " " , 1  +  springen_nach -  cursor_spalt)
        endif
endfunction


[ 本帖最后由 wuchuanren 于 2009-10-18 21:02 编辑 ]

http://www.2plus3.eu/redirect.php?fid=22&tid=2453&goto=nextnewset

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值