标签:style http color 使用 os strong 文件 io
最近一段一直使用sublime进行golang开发,整体感觉很不错,虽然比不上eclipse之类IDE强大,但是用起来很轻巧便捷,开发golang完全做够了。由于有一部分代码复用率很高,经常要用到,而自己记性特别差也懒得每次自己敲,就希望能够像其他IDE的插件那样能直接插入代码模板,于是就研究了下sublime的插件开发(网上有很多人推荐Gist,但是发现由于网络原因适用Gist插件很慢,每次都要等很长时间)。
template #模板文件夹 codemanage.py #插件代码 Default (XXX).sublime-keymap #快捷键配置文件,XXX值平台 var-map.conf #替换变量配置文件,key=value
codemanage.py代码如下:
#-*- coding: UTF-8 -*-
import sublime, sublime_plugin
import os
import os.path
import time
import sys
reload(sys)
sys.setdefaultencoding(‘utf8‘)
#写入模板,如果是新模板按照模板名创建一个文件,如果是旧模板则覆盖写原文件
class CodeTplAddCommand(sublime_plugin.TextCommand):
def run(self,edit):
#获取当前选中内容
selstr = ‘‘
sels = self.view.sel()
for sel in sels:
value = self.view.substr(sel)
if value == ‘‘:
continue
selstr = selstr + value + ‘\n‘
if selstr == ‘‘:
sublime.message_dialog("Select content is empty.")
return
def on_done(name):
if name==‘‘:
sublime.message_dialog("Template name is empty.")
return
#写入文件
path = os.path.join(sublime.packages_path(),"CodeManage","template",name+".ctpl")
try:
f = open(path, ‘w‘)
print selstr
selstr.encode("gbk")
f.write(selstr)
except Exception, e:
print e
sublime.message_dialog("Write template file fail:"+str(e))
return
finally:
f.close()
def on_change(name):
return
def on_cancel():
return
#输入模板名
self.view.window().show_input_panel(‘Plese input the code template name‘,‘template‘,on_done,on_change,on_cancel)
#将对应模板插入当前位置
class CodeTplInsertCommand(sublime_plugin.TextCommand):
def run(self,edit):
filenames = []
rootdir= os.path.join(sublime.packages_path(),"CodeManage","template")
for p,d,files in os.walk(rootdir):
filenames = files
def on_sel_done(selvalue):
if selvalue==-1:
return
filename = filenames[selvalue]
content = ‘‘
if filename==‘‘:
sublime.message_dialog("Template is not exist.")
return
path = os.path.join(sublime.packages_path(),"CodeManage","template",filename)
try:
f = open(path, ‘r‘)
content = f.read()
if content==‘‘:
sublime.message_dialog("Template file is empty")
return
content = ReplaceVar(content)
except Exception, e:
sublime.message_dialog("Open template file fail:"+str(e))
return
finally:
f.close()
#把内容插入当前位置
sels = self.view.sel()
for sel in sels:
self.view.insert(edit,sel.begin(),content)
#打开选择列表
self.view.window().show_quick_panel(filenames,on_sel_done)
#处理一些模板替换变量
#将模板中{{XXX}}的变量替换成配置文件中的变量({{data}}等信息直接替换)
def ReplaceVar(content):
varmap = {
‘{{date}}‘:time.strftime(‘%Y-%m-%d‘,time.localtime(time.time()))
}
#读取变量
try:
path = os.path.join(sublime.packages_path(),"CodeManage","var-map.conf")
f = open(path, ‘r‘)
for line in f.readlines():
if line==‘‘:
continue
value = line.split("=")
varmap["{{"+value[0]+"}}"] = value[1]
except Exception, e:
sublime.message_dialog("Open var-map file fail:"+str(e))
return
finally:
f.close()
for (k,v) in varmap.items():
content = content.replace(k,v)
return content
懂python应该可以看出来非常简单。
Sublime插件开发——简单的代码模板插件,布布扣,bubuko.com
标签:style http color 使用 os strong 文件 io
原文地址:http://my.oschina.net/goodtemper/blog/295243