Skip to content

Commit ca1da10

Browse files
changed keymap (use super instead of ctrl), improved some refactor commands and WindowView.py
1 parent ac620a9 commit ca1da10

File tree

10 files changed

+239
-33
lines changed

10 files changed

+239
-33
lines changed

Default.sublime-keymap

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,31 +1,31 @@
11
[
22
{
3-
"keys": ["ctrl+alt+w"],
3+
"keys": ["super+alt+w"],
44
"command": "can_i_use"
55
},
66
{
7-
"keys": ["ctrl+alt+c"],
7+
"keys": ["super+alt+c"],
88
"command": "navigate_flow_errors",
99
"args": {
1010
"type": "next"
1111
}
1212
},
1313
{
14-
"keys": ["ctrl+alt+v"],
14+
"keys": ["super+alt+v"],
1515
"command": "navigate_flow_errors",
1616
"args": {
1717
"type": "previous"
1818
}
1919
},
2020
{
21-
"keys": ["ctrl+alt+g"],
21+
"keys": ["super+alt+g"],
2222
"command": "go_to_def"
2323
},
2424
{
25-
"keys": ["ctrl+alt+s"],
25+
"keys": ["super+alt+s"],
2626
"command": "show_hint_parameters"
2727
},
2828
{"keys": ["tab"], "command": "window_view_keypress", "args": {"key": "tab"}, "context": [{"key": "setting.javascript_enhancements_window_view"}]},
2929
{"keys": ["shift+tab"], "command": "window_view_keypress", "args": {"key": "shift+tab"}, "context": [{"key": "setting.javascript_enhancements_window_view"}]},
30-
{"keys": ["ctrl+alt+a"], "command": "window_view_keypress", "args": {"key": "ctrl+alt+a"}, "context": [{"key": "setting.javascript_enhancements_window_view"}]}
30+
{"keys": ["super+alt+a"], "command": "window_view_keypress", "args": {"key": "super+alt+a"}, "context": [{"key": "setting.javascript_enhancements_window_view"}]}
3131
]

_generated_2018_02_04_at_18_22_03.py renamed to _generated_2018_02_04_at_23_42_01.py

Lines changed: 114 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -3005,16 +3005,16 @@ class WindowViewManager():
30053005

30063006
window_views = {}
30073007

3008-
def add(self, view_id_caller, window_view):
3009-
if not view_id_caller in self.window_views:
3010-
self.window_views[view_id_caller] = window_view
3008+
def add(self, view_id, window_view):
3009+
if not view_id in self.window_views:
3010+
self.window_views[view_id] = window_view
30113011

3012-
def get(self, view_id_caller):
3013-
return self.window_views[view_id_caller]
3012+
def get(self, view_id):
3013+
return self.window_views[view_id] if view_id in self.window_views else None
30143014

3015-
def remove(self, view_id_caller):
3016-
if view_id_caller in self.window_views:
3017-
del self.window_views[view_id_caller]
3015+
def remove(self, view_id):
3016+
if view_id in self.window_views:
3017+
del self.window_views[view_id]
30183018

30193019
windowViewManager = WindowViewManager()
30203020

@@ -3033,7 +3033,6 @@ def __init__(self, title="WindowView", window=None, view=None, use_compare_layou
30333033
else:
30343034
self.layout_before = None
30353035

3036-
30373036
self.view = ( self.window.new_file() if not window else window.new_file() ) if not view else view
30383037
self.view.set_name(title)
30393038
self.view.set_read_only(True)
@@ -3053,15 +3052,20 @@ def __init__(self, title="WindowView", window=None, view=None, use_compare_layou
30533052
self.events = dict()
30543053
self.region_ids = []
30553054
self.region_input_ids = []
3055+
self.input_state = {}
3056+
self.undo_state = False
3057+
self.redo_state = False
30563058

30573059
windowViewManager.add(self.view_id_caller, self)
3060+
windowViewManager.add(self.view.id(), self)
30583061
Hook.add("javascript_enhancements_window_view_close_"+str(self.view.id()), self.destroy)
30593062

30603063
def __del__(self):
30613064
if self.use_compare_layout and self.layout_before:
30623065
self.window.set_layout(self.layout_before)
30633066
self.window.focus_group(0)
30643067
windowViewManager.remove(self.view_id_caller)
3068+
windowViewManager.remove(self.view.id())
30653069
Hook.removeAllHook("javascript_enhancements_window_view_close_"+str(self.view.id()))
30663070
for event in self.events.keys():
30673071
for eventRegionKey in self.events[event].keys():
@@ -3104,6 +3108,9 @@ def addTitle(self, text, key="", scope="javascriptenhancements.title", icon="",
31043108
text = space_row+"\n"+space_padding+text+space_padding+"\n"+space_row+" "
31053109
self.add(text, key=key, scope=scope, icon=icon, flags=flags, region_id=region_id, padding=0, display_block=display_block, insert_point=insert_point, replace_points=replace_points)
31063110

3111+
self.add("\n\nNOTE: See the keymap ")
3112+
self.addLink("here", "https://github.com/pichillilorenzo/JavaScriptEnhancements/wiki", "link")
3113+
31073114
def addSubTitle(self, text, key="", scope="javascriptenhancements.subtitle", icon="", flags=sublime.DRAW_EMPTY | sublime.DRAW_NO_OUTLINE, region_id="", padding=1, display_block=True, insert_point=None, replace_points=[]):
31083115
self.add(text, key=key, scope=scope, icon=icon, flags=flags, region_id=region_id, padding=padding, display_block=display_block, insert_point=insert_point, replace_points=replace_points)
31093116

@@ -3129,6 +3136,18 @@ def addInput(self, value=" ", label=None, key="input", scope="javascriptenhancem
31293136
self.add(value, key=key, scope=scope, icon=icon, flags=flags, region_id=region_id, padding=padding, display_block=display_block, insert_point=insert_point, replace_points=replace_points)
31303137
self.region_input_ids.append(region_id)
31313138

3139+
def updateInput(self, value, key="input", scope="javascriptenhancements.input", icon="", flags=sublime.DRAW_EMPTY | sublime.DRAW_NO_OUTLINE, region_id="", padding=1, display_block=False, insert_point=None, replace_points=[]):
3140+
3141+
self.replaceById(region_id, value, key=key, scope=scope, icon=icon, flags=flags, region_id=region_id, padding=padding, display_block=display_block, insert_point=insert_point, replace_points=replace_points)
3142+
3143+
if not region_id:
3144+
raise Exception("Error: ID isn't setted.")
3145+
3146+
if region_id in self.region_input_ids:
3147+
raise Exception("Error: ID "+region_id+" already used.")
3148+
3149+
self.region_input_ids.append(region_id)
3150+
31323151
def addSelect(self, default_option, options, label=None, key="select", scope="javascriptenhancements.input", icon="", flags=sublime.DRAW_EMPTY | sublime.DRAW_NO_OUTLINE, region_id="", padding=1, display_block=False, insert_point=None, replace_points=[]):
31333152

31343153
if not region_id:
@@ -3243,6 +3262,58 @@ def setColorScheme(self):
32433262
if self.view.settings().get('color_scheme') != color_scheme:
32443263
self.view.settings().set('color_scheme', color_scheme)
32453264

3265+
def setInputState(self, delta):
3266+
self.undo_state = True
3267+
self.redo_state = True
3268+
3269+
for region_input_id in self.region_input_ids:
3270+
region = self.view.get_regions(region_input_id)
3271+
if region:
3272+
region = region[0]
3273+
if region.contains(self.view.sel()[0]) and region_input_id in self.input_state:
3274+
if self.input_state[region_input_id]["index"] + delta >= 0 and self.input_state[region_input_id]["index"] + delta < len(self.input_state[region_input_id]["state"]):
3275+
self.input_state[region_input_id]["index"] = self.input_state[region_input_id]["index"] + delta
3276+
index = self.input_state[region_input_id]["index"]
3277+
self.updateInput(self.input_state[region_input_id]["state"][ index ], region_id=region_input_id)
3278+
if region.contains(self.input_state[region_input_id]["selections"][ index ][0]):
3279+
self.view.sel().clear()
3280+
self.view.sel().add_all(self.input_state[region_input_id]["selections"][ index ])
3281+
break
3282+
3283+
self.undo_state = False
3284+
self.redo_state = False
3285+
3286+
def updateInputState(self):
3287+
if self.undo_state or self.redo_state:
3288+
return
3289+
3290+
inputs = self.getInputs()
3291+
3292+
for k, v in inputs.items():
3293+
3294+
if k in self.input_state:
3295+
3296+
if self.input_state[k]["index"] != len(self.input_state[k]["state"]) - 1:
3297+
self.input_state[k]["state"] = self.input_state[k]["state"][:self.input_state[k]["index"]+1]
3298+
self.input_state[k]["selections"] = self.input_state[k]["selections"][:self.input_state[k]["index"]+1]
3299+
3300+
if self.input_state[k]["state"][-1] != v:
3301+
self.input_state[k]["state"].append(v)
3302+
selections = []
3303+
for sel in self.view.sel():
3304+
selections.append(sel)
3305+
self.input_state[k]["selections"].append(selections)
3306+
self.input_state[k]["index"] = len(self.input_state[k]["state"]) - 1
3307+
3308+
else:
3309+
self.input_state[k] = {}
3310+
self.input_state[k]["state"] = [v]
3311+
selections = []
3312+
for sel in self.view.sel():
3313+
selections.append(sel)
3314+
self.input_state[k]["selections"] = [selections]
3315+
self.input_state[k]["index"] = len(self.input_state[k]["state"]) - 1
3316+
32463317
def close(self):
32473318
self.view.close()
32483319
self.destroy()
@@ -3350,7 +3421,7 @@ def run(self, edit, **args):
33503421
view.sel().clear()
33513422
view.sel().add(input_regions[0].begin()+1)
33523423

3353-
if key == "ctrl+alt+a":
3424+
if key == "super+alt+a":
33543425
input_regions = view.get_regions("input.javascriptenhancements.input")
33553426
for region in input_regions:
33563427
if region.contains(view.sel()[0]):
@@ -3362,6 +3433,12 @@ class WindowViewEventListener(sublime_plugin.EventListener):
33623433
def on_activated_async(self, view):
33633434
self.on_selection_modified(view)
33643435

3436+
def on_modified(self, view):
3437+
if view.settings().get("javascript_enhancements_window_view"):
3438+
windowView = windowViewManager.get(view.id())
3439+
if windowView:
3440+
windowView.updateInputState()
3441+
33653442
def on_selection_modified(self, view):
33663443
if view.settings().get("javascript_enhancements_window_view"):
33673444

@@ -3386,12 +3463,24 @@ def on_text_command(self, view, command_name, args):
33863463
if view.settings().get("javascript_enhancements_window_view"):
33873464
Hook.apply(command_name, view, args)
33883465

3466+
if command_name == "undo" or command_name == "redo_or_repeat" or command_name == "redo":
3467+
windowView = windowViewManager.get(view.id())
3468+
if windowView:
3469+
windowView.setInputState( (-1 if command_name == "undo" else +1) )
3470+
self.on_selection_modified(view)
3471+
return ("noop", {})
3472+
3473+
if command_name == "soft_undo" or command_name == "soft_redo":
3474+
return ("noop", {})
3475+
33893476
for region in view.get_regions("input.javascriptenhancements.input"):
33903477
if view.sel()[0].begin() == view.sel()[0].end():
33913478
if command_name == "left_delete" and view.sel()[0].begin() == region.begin() + 1:
33923479
return ("noop", {})
33933480
elif command_name == "right_delete" and view.sel()[0].end() == region.end() - 1:
33943481
return ("noop", {})
3482+
if command_name == "insert":
3483+
return ("noop", {})
33953484

33963485
def on_close(self, view):
33973486
if view.settings().get("javascript_enhancements_window_view"):
@@ -4018,6 +4107,10 @@ def on_text_command(self, view, command_name, args):
40184107
view.hide_popup()
40194108

40204109
def on_post_text_command(self, view, command_name, args):
4110+
4111+
if len(view.sel()) <= 0:
4112+
return
4113+
40214114
sel = view.sel()[0]
40224115
if not view.match_selector(
40234116
sel.begin(),
@@ -6052,7 +6145,7 @@ def run(self, edit, **args):
60526145
windowView.add(text="\n")
60536146
windowView.addSelect(default_option=0, options=select_options, label="Scope: ", region_id="scope")
60546147
windowView.add(text="\n\n")
6055-
windowView.addCloseButton(text="OK", scope="javascriptenhancements.button_ok", callback=lambda view: self.view.run_command("refactor_extract_method", args={"inputs": windowView.getInputs()}))
6148+
windowView.addCloseButton(text="CREATE", scope="javascriptenhancements.button_ok", callback=lambda view: self.view.run_command("refactor_extract_method", args={"inputs": windowView.getInputs()}))
60566149
windowView.add(text=" ")
60576150
windowView.addCloseButton(text="CANCEL", scope="javascriptenhancements.button_cancel")
60586151
windowView.add(text=" \n")
@@ -6082,7 +6175,7 @@ def run(self, edit, **args):
60826175
windowView.add(text="\n")
60836176
windowView.addSelect(default_option=0, options=select_options, label="Scope: ", region_id="scope")
60846177
windowView.add(text="\n\n")
6085-
windowView.addCloseButton(text="OK", scope="javascriptenhancements.button_ok", callback=lambda view: self.view.run_command("refactor_extract_field", args={"inputs": windowView.getInputs()}))
6178+
windowView.addCloseButton(text="CREATE", scope="javascriptenhancements.button_ok", callback=lambda view: self.view.run_command("refactor_extract_field", args={"inputs": windowView.getInputs()}))
60866179
windowView.add(text=" ")
60876180
windowView.addCloseButton(text="CANCEL", scope="javascriptenhancements.button_cancel")
60886181
windowView.add(text=" \n")
@@ -6114,6 +6207,10 @@ def run(self, edit, **args):
61146207
sublime.error_message("Cannot move this file. File name is empty.")
61156208
return
61166209

6210+
if not new_path:
6211+
sublime.error_message("The File path is empty.")
6212+
return
6213+
61176214
if new_path == file_name:
61186215
sublime.message_dialog("The file path is the same as before.")
61196216
return
@@ -6335,6 +6432,10 @@ def run(self, edit, **args):
63356432
sublime.error_message("Cannot copy this file. File name is empty.")
63366433
return
63376434

6435+
if not new_path:
6436+
sublime.error_message("The File path is empty.")
6437+
return
6438+
63386439
if new_path == file_name:
63396440
sublime.message_dialog("The file path is the same as before.")
63406441
return
@@ -7000,7 +7101,7 @@ def run(self, edit, **args):
70007101
inputs = args.get("inputs")
70017102
content = view.substr(selection).strip()
70027103
content = content[:-1] if content[-1] == ";" else content
7003-
field_name = inputs["field_name"]
7104+
field_name = inputs["field_name"].strip()
70047105

70057106
flow_cli = "flow"
70067107
is_from_bin = True

changelog/0.14.0.txt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,10 @@ v0.14.0
2222
- Added "Open TerminalView Here…" command to Context Menu and Side Bar Menu
2323
- Forced "auto_complete_delay" option to 0 when showing JavaScript auto-completions
2424

25+
## Misc
26+
27+
- Keymap changed, now you may want use "super" key instead of "ctrl" key
28+
2529

2630
=================================================================
2731
** THIS PLUGIN IS IN BETA! Thanks for your support in advance! **

0 commit comments

Comments
 (0)