- 입력받는 창에 'editthis' 라고 하면, 현재의 플러그인 정의파일을 열고,
- 입력받는 창에 'edithost' 라고 하면, 윈도우즈의 hosts파일을 엽니다.
- (그 외에도 아직 작성은 안되어 있지만, 'diary'라던가 'pyman'이라던가 하는 명령어들을 만들어 사용하고 있습니다.)

입력받을 창을 것이 필요한데, Class sublime.Window 클래스의 show_input_panel(caption, initial_text, on_done, on_change, on_cancel) 함수를 사용합니다.
#언제나처럼 api문서는 이쪽 입니다.
#이 입력받는 참은 emeditor에서는 prompt()라는 api로 제공되고 있습니다.
#emeditor에서는 js로 작성해서인지, 추가하고 추가하고 몇 년이 흐르면 스파게티소스가 되어 있는데, python은 그래도 OOP구조를 띠고 있어서 그렇지는 않을 것 같습니다.
#이 커맨드는 단축키 alt-w 로 정의해서 사용하고 있습니다. 이미 global key binding에서 alt-w는 'toggle_whole_word'라는 커맨드로 연결되어 있습니마만, 저 기능으로 써먹기는 참 아까운 단축키입니다.
#클래스이름 CrowdyEx의 Ex는 눈치채셨겠지만, vi의 Ex명령어 입력모드에서 빌려온 것입니다.
코드입니다.
'''
view.run_command('crowdy_ex')
[
{ "keys": ["alt+w"], "command": "crowdy_ex" }
]
'''
import sublime, sublime_plugin
class CrowdyExCommand(sublime_plugin.WindowCommand):
def run(self):
self.window.show_input_panel("input ex command", '', self.__on_done, None, None)
def __on_done(self, strInput):
if strInput == 'editthis':
self.window.open_file('C:\Documents and Settings\usr0100023\Application Data\Sublime Text 2\Packages\User\crowdy.py')
elif strInput == 'edithost':
self.window.open_file('c:\WINDOWS\system32\drivers\etc\hosts')
else:
print strInut
사실 리눅스와 Mac OS에서 사용하려면, 현재의 OS정보를 보고 분기해야 하겠군요.
>>> print os.name
nt
>>> import platform
>>> print platform.system(), platform.release()
Windows XP
No comments:
Post a Comment