2013-08-28 2 views
1

를 사용하여 설정 값을 대체하려고, 나는를 사용하여 설정 값을 대체하려고 동일한 단축키이지만 다른 컨텍스트가 있습니다. 기본적으로 draw_white_space 설정을 가능한 세 가지 값, 즉 none, selectionall 사이에서 바꾸고 싶습니다.내가이 동작하지 않습니다 : 숭고한 텍스트 (3), 나 같은 바로 가기/키맵과 맥락 숭고한 텍스트 3에서

나는 세 개의 바로 가기/키맵과 충분히 쉽게 설정을 변경합니다. 각각의 가능한 값을 통해 ["ctrl+e", "ctrl+w"]를 누르고 그것을 대체를 할 수 있도록 내가 좋아하는 정말 것이 무엇이며,

{ 
    "keys": ["ctrl+e", "ctrl+w"], 
    "command": "set_setting", 
    "args": { 
     "setting": "draw_white_space", 
     "value": "all", 
    } 
}, 
{ 
    "keys": ["ctrl+e", "ctrl+q"], 
    "command": "set_setting", 
    "args": { 
     "setting": "draw_white_space", 
     "value": "none", 
    } 
}, 
{ 
    "keys": ["ctrl+e", "ctrl+s"], 
    "command": "set_setting", 
    "args": { 
     "setting": "draw_white_space", 
     "value": "selection", 
    } 
} 

하지만 다음과 같습니다 (작업) 그 코드입니다. 예, 저는 익숙한 Visual Studio 바로 가기입니다!

나는 그것이 작동해야한다고 생각하는 것을 만들었지 만, 그렇지 않습니다. 적어도 내가 원하는 방식은 아닐세. 그 코드는 다음과 같습니다. (깨짐) :

{ 
    "keys": ["ctrl+e", "ctrl+w"], 
    "command": "set_setting", 
    "args": { 
     "setting": "draw_white_space", 
     "value": "none", 
    }, 
    "context": [ 
     { "key": "setting.draw_white_space", 
      "operator": "equal", "operand": "all" } 
    ] 
}, 
{ 
    "keys": ["ctrl+e", "ctrl+w"], 
    "command": "set_setting", 
    "args": { 
     "setting": "draw_white_space", 
     "value": "selection", 
    }, 
    "context": [ 
     { "key": "setting.draw_white_space", 
      "operator": "equal", "operand": "none" } 
    ] 
}, 
{ 
    "keys": ["ctrl+e", "ctrl+w"], 
    "command": "set_setting", 
    "args": { 
     "setting": "draw_white_space", 
     "value": "all", 
    }, 
    "context": [ 
     { "key": "setting.draw_white_space", 
      "operator": "equal", "operand": "selection" } 
    ] 
} 

나는 내 컨텍스트를 테스트 했으므로 작동하는 것으로 알고 있습니다. 예를 들어 수동으로 all을 내 설정 파일에 설정하면 all을 확인하는 바로 가기가 처음으로 작동합니다. 그 후에도 다른 사람들도 그 일을 할 것입니다.

내가 눈치 또 다른 점은 바로 가기 (세 별도의 바로 가기 포함) 작업을 수행 할 때 내 설정 파일이 draw_white_space 값을 변경하지 않습니다. 기본 동작 일 수 있다고 가정했는데 세션마다 설정 변경이있을 수 있습니다. 그러나 설정을 완전히 제거했지만 여전히 동일한 동작입니다. |

나는 Preferences를 통해 열린 파일을 변경하고 Key Bindings - User 메뉴에서 <Sublime Text>\Data\Packages\User\Default (Windows).sublime-keymap 파일을 열었습니다.

아이디어가 있으십니까? 틀린 일을하고 있거나 뭔가를 놓치고 있습니까?

+0

cycle_draw_white_space에 결합하는 결합 아무 생각이 왜'{ "키": "setting.draw_white_space", "연산자": "피연산자" "not_equal" "all"}'은 항상 'true'가됩니다. – Kabie

답변

2

아마 당신이 원하지 않는 무엇을,하지만 당신은 아주 간단 플러그인이 동작을 얻을 수 있습니다.

import sublime 
import sublime_plugin 

class CycleDrawWhiteSpaceCommand(sublime_plugin.TextCommand): 
    def run(self, edit): 
     view = self.view 
     white_space_type = view.settings().get("draw_white_space") 

     if white_space_type == "all": 
      view.settings().set("draw_white_space", "none") 
     elif white_space_type == "none": 
      view.settings().set("draw_white_space", "selection") 
     else: 
      view.settings().set("draw_white_space", "all") 

당신이 플러그인을 저장 한 후, 키가

+0

와우, 고마워요! 그게 환상적이고 내가 찾고있는 것 뿐이야! 나는 원래의 문제를 야기했거나 일으키는 원인을 알지 못합니다. 그러나 이것은 내 요청을 예상보다 잘 해결했습니다! – wasatchwizard

+0

다시 한번 감사드립니다, @ skuroda! 나는 그것을 (지금까지 숭고한 텍스트 플러그인을 만드는 것에 대해 알고있는 것과 함께) 닦고 github에 올려 놓았다. 그것은 내가 원하는 것과 플러그인을 만드는 것에 대해 많은 것을 배웠습니다! 다시 한 번 감사드립니다! https://github.com/kodybrown/SublimeCycleWhiteSpace – wasatchwizard

관련 문제