目标
写代码的时候,一个模块一个状态机,定义的时候有点多。就弄了这个,在sublime编辑器里把一个数字替换为状态机独热码的定义。
示例
敲一个数字,再按快捷键替换。
代码
import os, sublime, sublime_plugin
# 用于将数字替换为状态机独热码定义
class NumberChangeCommand(sublime_plugin.TextCommand):
def run(self, edit):
view = self.view
position = view.sel()[0]
changestr = view.substr(position)
newstr = ''
try:
if isinstance(eval(changestr),int):
k = eval(changestr)
except NameError:
pass
else:
for i in range(k):
tempstr = i*'0'+'1'+(k-i-1)*'0'
tempstr_change = ''
for i in range(len(tempstr)):
if i%4==0 and i!=0:
tempstr_change += '_'+tempstr[i]
else:
tempstr_change += tempstr[i]
newstr += 'localparam your_state_name = '+changestr+"'b"+tempstr_change[::-1]+';\n'
newstr += '\nreg ['+str(k-1)+':0] c_state;\n'
newstr += 'reg ['+str(k-1)+':0] n_state;\n'
view.replace(edit,position,newstr)