diff --git a/Rainmeter.sublime-completions b/Rainmeter.sublime-completions index cacbb56..9bfc542 100644 --- a/Rainmeter.sublime-completions +++ b/Rainmeter.sublime-completions @@ -452,7 +452,23 @@ {"trigger": "!EnableMeasure", "contents": "!EnableMeasure \"${1:Measure}\" ${2:\"${3:(Config)}\"}"}, {"trigger": "!EnableMeasureGroup", "contents": "!EnableMeasureGroup \"${1:Group}\" ${2:\"${3:(Config)}\"}"}, {"trigger": "!EditSkin", "contents": "!EditSkin ${1:\"${2:(Config)}\"} ${3:\"${4:(File)}\"}"}, - + + + {"trigger": "!DisableMouseAction", "contents": "!DisableMouseAction \"${1:Meter}\" \"${2:MouseAction(s)}\" ${3:\"${4:(Config)}\"}"}, + {"trigger": "!ClearMouseAction", "contents": "!ClearMouseAction \"${1:Meter}\" \"${2:MouseAction(s)}\" ${3:\"${4:(Config)}\"}"}, + {"trigger": "!EnableMouseAction", "contents": "!EnableMouseAction \"${1:Meter}\" \"${2:MouseAction(s)}\" ${3:\"${4:(Config)}\"}"}, + {"trigger": "!ToggleMouseAction", "contents": "!ToggleMouseAction \"${1:Meter}\" \"${2:MouseAction(s)}\" ${3:\"${4:(Config)}\"}"}, + + {"trigger": "!DisableMouseActionGroup", "contents": "!DisableMouseActionGroup \"${1:MouseAction(s)}\" \"${2:Group}\" ${3:\"${4:(Config)}\"}"}, + {"trigger": "!ClearMouseActionGroup", "contents": "!ClearMouseActionGroup \"${1:MouseAction(s)}\" \"${2:Group}\" ${3:\"${4:(Config)}\"}"}, + {"trigger": "!EnableMouseActionGroup", "contents": "!EnableMouseActionGroup \"${1:MouseAction(s)}\" \"${2:Group}\" ${3:\"${4:(Config)}\"}"}, + {"trigger": "!ToggleMouseActionGroup", "contents": "!ToggleMouseActionGroup \"${1:MouseAction(s)}\" \"${2:Group}\" ${3:\"${4:(Config)}\"}"}, + + {"trigger": "!DisableMouseActionSkinGroup", "contents": "!DisableMouseActionSkinGroup \"${1:MouseAction(s)}\" \"${2:Group}\""}, + {"trigger": "!ClearMouseActionSkinGroup", "contents": "!ClearMouseActionSkinGroup \"${1:MouseAction(s)}\" \"${2:Group}\""}, + {"trigger": "!EnableMouseActionSkinGroup", "contents": "!EnableMouseActionSkinGroup \"${1:MouseAction(s)}\" \"${2:Group}\""}, + {"trigger": "!ToggleMouseActionSkinGroup", "contents": "!ToggleMouseActionSkinGroup \"${1:MouseAction(s)}\" \"${2:Group}\""}, + {"trigger": "!FadeDuration", "contents": "!FadeDuration ${1:Duration} ${2:\"${3:(Config)}\"}"}, {"trigger": "!FadeDurationGroup", "contents": "!FadeDurationGroup ${1:Duration} \"${2:ConfigGroup}\""}, diff --git a/Rainmeter.sublime-syntax b/Rainmeter.sublime-syntax index f6ac13f..195e438 100644 --- a/Rainmeter.sublime-syntax +++ b/Rainmeter.sublime-syntax @@ -8,6 +8,10 @@ uuid: 6a53050b-d898-4e20-8fa0-c1726f4ce466 foldingStartMarker: "^\\s*\\[\\s*[^\\[\\]\\s]*\\s*\\]\\s*$" foldingStopMarker: "^(?=\\s*\\[)" +variables: + mouse_action_name: "(?i)((LeftMouseUp|LeftMouseDown|LeftMouseDoubleClick|RightMouseUp|RightMouseDown|RIghtMouseDoubleClick|MiddleMouseUp|MiddleMouseDown|MiddleMouseDoubleClick|X1MouseUp|X1MouseDown|X1MouseDoubleClick|X2MouseUp|X2MouseDown|X2MouseDoubleClick|MouseScrollUp|MouseScrollDown|MouseScrollLeft|MouseScrollRight|MouseOver|MouseLeave)Action|\\*)" + meter-name: ".+|\".+\"" + # template # # @@ -330,7 +334,7 @@ contexts: 4: invalid.rainmeter # - - match: "(?i)^\\s*(measure)\\s*(=)\\s*((Calc|CPU|FreeDiskSpace|Loop|MediaKey|Memory|PhysicalMemory|SwapMemory|Net(In|Out|Total)|NowPlaying|Plugin|RecycleManager|Registry|Script|String|Time|Uptime|WebParser)|\"(Calc|CPU|FreeDiskSpace|Loop|MediaKey|Memory|PhysicalMemory|SwapMemory|Net(In|Out|Total)|NowPlaying|Plugin|RecycleManager|Registry|Script|String|Time|Uptime|WebParser)\")\\s*$" + - match: "(?i)^\\s*(Measure)\\s*(=)\\s*((Calc|CPU|FreeDiskSpace|Loop|MediaKey|Memory|PhysicalMemory|SwapMemory|Net(In|Out|Total)|NowPlaying|Plugin|RecycleManager|Registry|Script|String|Time|Uptime|WebParser)|\"(Calc|CPU|FreeDiskSpace|Loop|MediaKey|Memory|PhysicalMemory|SwapMemory|Net(In|Out|Total)|NowPlaying|Plugin|RecycleManager|Registry|Script|String|Time|Uptime|WebParser)\")\\s*$" scope: meta.option.measure.rainmeter captures: 1: storage.type.option.predefined.rainmeter @@ -338,7 +342,7 @@ contexts: 3: support.constant.names.rainmeter # - - match: "(?i)^\\s*(measure)\\s*(=)\\s*(?!(.*#.*#.*$|.*\\[.*\\].*$))(.*)\\s*$" + - match: "(?i)^\\s*(Measure)\\s*(=)\\s*(?!(.*#.*#.*$|.*\\[.*\\].*$))(.*)\\s*$" scope: meta.option.measure.invalid.rainmeter captures: 1: storage.type.option.predefined.rainmeter @@ -763,6 +767,36 @@ contexts: - match: "(?i)!((FadeDuration(Group)?)|(EditSkin)|(SetClip)|(SetWallpaper)|(About)|(Manage)|(Log)|(LsBoxHook)|(ResetStats)|(TrayMenu)|(RefreshApp)|(Quit)|(SetOption(Group)?)|(WriteKeyValue)|(SetVariable(Group)?)|(Toggle(Group|Config)?)|(Move(Meter)?)|(DeactivateConfig(Group)?)|(ActivateConfig)|(Refresh(Group)?)|(Redraw(Group)?)|(SetTransparency(Group)?)|((Show|Hide|Toggle)Fade(Group)?)|((Show|Hide|Toggle|Add|Remove)Blur)|(Draggable(Group)?)|(ZPos(Group)?)|(KeepOnScreen(Group)?)|(ClickThrough(Group)?)|AutoSelectScreen(Group)?|(SnapEdges(Group)?)|(SkinMenu)|(SkinCustomMenu)|((Show|Hide|Toggle|Update)Meter(Group)?)|(((Dis|En)able|Toggle|Update)Measure(Group)?)|(CommandMeasure)|((Un|Toggle)?PauseMeasure)|((Show|Hide)(Group)?|(Update)|(LoadLayout)))\\b" scope: support.function.bang.rainmeter + - include: mouse-action-bangs + # https://docs.rainmeter.net/manual-beta/bangs/#MouseAction + mouse-action-bangs: + # reversed order because of priority of same common action names + - include: skin-group-bangs + - include: meter-group-bangs + - include: meter-bangs + + meter-bangs: + # Parameters: Meter, MouseAction(s), Config (optional) + - match: "(?i)!((Disable|Clear|Enable|Toggle)MouseAction)" + scope: support.function.bang.rainmeter + - include: mouse-action-name + meter-group-bangs: + # Parameters: MouseAction(s), Group, Config (optional) + - match: "(?i)!((Disable|Clear|Enable|Toggle)MouseActionGroup)" + scope: support.function.bang.rainmeter + skin-group-bangs: + # Parameters: MouseAction(s), Group + - match: "(?i)!((Disable|Clear|Enable|Toggle)MouseActionSkinGroup)" + scope: support.function.bang.rainmeter + mouse-action-name: + # need other scopes if the action name is in front and thus a key + - match: "({{mouse_action_name}})\\s*(=)" + captures: + 1: storage.type.option.predefined.rainmeter + 4: keyword.operator.option.equal.rainmeter + # this is a mouse action name in a parameter + - match: "{{mouse_action_name}}" + scope: support.constant.option_values.rainmeter # Include statements includes: diff --git a/messages.json b/messages.json index c541c14..7866698 100644 --- a/messages.json +++ b/messages.json @@ -38,5 +38,6 @@ "2.18.0": "messages/2.18.0.md", "2.19.0": "messages/2.19.0.md", "2.20.0": "messages/2.20.0.md", - "2.21.0": "messages/2.21.0.md" + "2.21.0": "messages/2.21.0.md", + "2.22.0": "messages/2.22.0.md" } diff --git a/messages/2.22.0.md b/messages/2.22.0.md new file mode 100644 index 0000000..6168bc4 --- /dev/null +++ b/messages/2.22.0.md @@ -0,0 +1,10 @@ +# Sublime Rainmeter Release 2.22.0 + +* Update to Rainmeter Beta 4.2 Revision 3064 +* Added support for enabling and disabling mouse actions on meters. Documentation at [Mouse Action state bangs](https://docs.rainmeter.net/manual-beta/bangs/#MouseAction). + +[Full release notes](https://github.com/thatsIch/sublime-rainmeter/releases/tag/2.22.0) + +--- + +A lot of effort has been put into Sublime Rainmeter. If you like it, star the [repository](https://github.com/thatsIch/sublime-rainmeter).