2017-01-04 14 views
0

sublimetextで折り畳み記号を削除すると、折り畳まれたテキスト全体が削除されますか? vimのように削除する前に折り畳み記号が展開されることをお勧めします。 enter image description here折り畳み記号をsublimetextで読み取り専用に設定する方法はありますか?

+0

私は折りたたみを読み取り専用にすることはできないと思います。あなたがそれらの背後にあるとバックスペースを押すことが複雑ではないはずですが、それらを展開するが、 –

答えて

3

私はあなたが折り畳みの背後にいて、バックスペースを押すと自動的に展開するように振舞いたいと思います。これはアーカイブするのが簡単です(バージョン3125以降では)、コンテキストとコマンドを追加するだけです。

ツール>>開発>>新しいプラグイン...を経由してペーストをプラグインを作成し、保存します。

import sublime 
import sublime_plugin 


class UnfoldBeforeCommand(sublime_plugin.TextCommand): 
    def run(self, edit): 
     view = self.view 
     for sel in view.sel(): 
      # fold the position before the selection 
      view.unfold(sublime.Region(sel.b - 1)) 


class IsBehindFoldContext(sublime_plugin.EventListener): 
    def on_query_context(self, view, key, operator, operand, match_all): 
     if key != "is_behind_fold": 
      return 

     quantor = all if match_all else any 

     result = quantor(
      view.is_folded(sel) and view.is_folded(sublime.Region(sel.b - 1)) 
      for sel in view.sel() 
     ) 

     if operator == sublime.OP_EQUAL: 
      result = result == operand 
     elif operator == sublime.OP_NOT_EQUAL: 
      result = result != operand 
     else: 
      raise Exception("Operator type not supported") 

     return result 

あなたのキーマップにこれを追加します。

{ 
    "keys": ["backspace"], 
    "command": "unfold_before", 
    "context": 
    [ 
     { "key": "selection_empty" }, 
     { "key": "is_behind_fold", "operator": "equal", "operand": true } 
    ] 
} 

今、あなたがすべき大丈夫です。

+0

素晴らしい!ありがとうございました!これはサブライテキストを完璧にします。 – v217

1

折り畳みを開くだけで、任意のカスタム折り畳みが消えます。カスタムフォールドを使用すると、CTRL + SHIFT + ]で挿入されたフォールドを意味します。

+0

私はすべての折りたたみシンボルを読み取り専用にする設定やプラグインソリューションを探しています。 Vimで折り返し記号を削除すると、それが開きます。 – v217

+1

さて、私はあなたを助けることができないのではないかと心配しています。私はその種のプラグインを見つけられませんでした。とにかくありがとう。 –

+0

私は本当に崇高なデザインが好きです!しかし、これは唯一の問題です。例えば、vimのような他の編集者は、より良い方法やほんの少し上手な方法です。視覚的なコード...とにかく誰かが考えを思い付くかもしれません – v217

関連する問題