1

選択範囲内のすべての地域を検索するにはどうすればいいですか? 私たちは、このメソッドを呼び出す場合は、次のビューコンテキストでサブライムテキストプラグイン - 選択範囲内のすべての地域を見つける方法

def chk_links(self,vspace): 
    url_regions = vspace.find_all("https?://[^\"'\s]+") 

    i=0 
    for region in url_regions: 
     cl = vspace.substr(region) 
     code = self.get_response(cl) 
     vspace.add_regions('url'+str(i), [region], "mark", "Packages/User/icons/"+str(code)+".png") 
     i = i+1 
    return i 

、例えば:

chk_links(self.view) 

をすべてはうまく動作しますが、このように:はAttributeError: '

chk_links(self.view.sel()[0]) 

私はエラーを取得します地域 'オブジェクトには属性' find_all 'がありません

プラグインの完全なコードhere

Sublime "View" method documentation

答えて

2

View.sel()によって返さ)Selectionクラスは、本質的に、現在の選択を表すRegionオブジェクトのリストだけです。 A Regionは空にすることができます。したがって、リストには長さが0の領域が1つ以上含まれています。

唯一のmethods available on the Selection classは、エクステントを変更してクエリします。同様のmethods are available on the Region class

あなたはになります。あなたのコードが現在行っているように興味深い領域をすべて見つけて、チェックを繰り返して、選択肢に含まれているかどうかを確認してください。

これを説明するために上の例を削除しました(一部のロジックはわかりやすくするために削除されています)。最初のURLのリスト全体が収集され、リストのみ考慮されるそれぞれの領域を反復されるにつれてNO選択が存在する場合や選択がある場合 URL領域が含まれています選択範囲内にある。

import sublime, sublime_plugin 

class ExampleCommand(sublime_plugin.TextCommand): 
    # Check all links in view 
    def check_links(self, view): 
     # The view selection list always has at least one item; if its length is 
     # 0, then there is no selection; otherwise one or more regions are 
     # selected. 
     has_selection = len(view.sel()[0]) > 0 

     # Find all URL's in the view 
     url_regions = view.find_all ("https?://[^\"'\s]+") 

     i = 0 
     for region in url_regions: 
      # Skip any URL regions that aren't contained in the selection. 
      if has_selection and not view.sel().contains (region): 
       continue 

      # Region is either in the selection or there is no selection; process 
      # Check and 
      view.add_regions ('url'+str(i), [region], "mark", "Packages/Default/Icon.png") 
      i = i + 1 

    def run(self, edit): 
     if self.view.is_read_only() or self.view.size() == 0: 
      return 
     self.check_links (self.view) 
+0

これは「選択に含まれている」チェックを行うことをお勧めします。どうもありがとうございました。 –

関連する問題