2012-07-24 4 views
3

하나는 파이프 할 수있는 기능과 같이 명령에 전체 범위의 내용이었다 meta.class.python 또는 무엇이든간에 사용할 범위를 지정하십시오.를 사용하여 전체 범위의 TextMate에 대한 좋은 일들이

플러그인의 입력으로 현재 범위 전체를 파이프하는 작은 플러그인을 작성하려고합니다. (예를 들어 정확히는 아니지만 닫기) 내가 뭔가를 할 수있는 방법에 대한 숭고한 텍스트 플러그인 API를 흐르고했습니다

import sublime, sublime_plugin 
import re 

class DoStuffWithSelection(sublime_plugin.TextCommand): 
    def run(self, edit): 
     for region in self.view.sel(): 
      if not region.empty(): 
       changed = region # Do something to the selection 
       self.view.replace(edit, region, changed) # Replace the selection 

: 입력으로 현재의 선택 (들)을 사용하여 모든)

을 선택하지 않고 전체 파이썬 클래스를 주석으로는 매우 쉽습니다 for region in self.view.scope()과 같지만 성공하지 못했습니다.

그런 다음 커서 아래에있는 현재 범위의 내용을 플러그인 함수의 입력으로 사용하는 방법이 있습니까? 또는 선택 영역이 없으면 전체 범위를 사용하는 방법을 사용하는 것이 좋지만 선택 영역이 있으면 선택 영역을 사용하십시오.

감사합니다.

답변

2

선택한 텍스트를 가져 오려면 다음 코드 단편을 예로들 수 있습니다.

if not region.empty(): 
    selectText = self.view.substr(region) 
    ... 

커서가있는 곳의 텍스트를 가져 오려면 다음 코드 단편을 예로들 수 있습니다.

if region.empty(): 
    lineRegion = self.view.line(region) 
    lineText = self.view.substr(lineRegion) 
    ... 

는 더 많은 정보를 얻을 http://net.tutsplus.com/tutorials/python-tutorials/how-to-create-a-sublime-text-2-plugin/http://www.sublimetext.com/docs/api-reference를 참조하십시오. 사용

+1

은'region.empty()'예 성공적으로 커서가있는 줄 전체를 얻을 수 있지만, 전체 범위를하지 않습니다. 또한 원하는 범위를 지정할 수 없습니다 (예를 들어, Python 클래스에는 범위로'source.python'' meta.class.python' 및'entity.name.type.class.python'이 있습니다. 플러그인이 사용할 플러그인을 선택하십시오. – Andrew

관련 문제