Get out of brackets and parenthesis with Tab - sublimetext

The problem is you have to use arrows or Macros to jump out of parenthesis, square brackets, curly brackets, single quotes and double-quotes.

The easy solution I found to this problem :
[VSCode] there's an extension called TabOut, install it (done).
[SublimeText3] we have to make some changes to Key Bindings
Preferences>Key Bindings
copy and paste the snippet below to the right side pane, save and close this window.
(tested and working ✌)
[
{ "keys": ["("], "command": "insert_snippet", "args": {"contents": "($1)$0"}, "context":
[
{ "key": "setting.auto_match_enabled", "operator": "equal", "operand": true },
{ "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true },
{ "key": "following_text", "operator": "regex_contains", "operand": "^(?:\t| |\\)|]|;|\\}|$)", "match_all": true }
]
},
{ "keys": ["{"], "command": "insert_snippet", "args": {"contents": "{$1}$0"}, "context":
[
{ "key": "setting.auto_match_enabled", "operator": "equal", "operand": true },
{ "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true },
{ "key": "following_text", "operator": "regex_contains", "operand": "^(?:\t| |\\)|]|\\}|$)", "match_all": true }
]
},
{ "keys": ["["], "command": "insert_snippet", "args": {"contents": "[$1]$0"}, "context":
[
{ "key": "setting.auto_match_enabled", "operator": "equal", "operand": true },
{ "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true },
{ "key": "following_text", "operator": "regex_contains", "operand": "^(?:\t| |\\)|]|;|\\}|$)", "match_all": true }
]
},
{ "keys": ["\""], "command": "insert_snippet", "args": {"contents": "\"$1\"$0"}, "context":
[
{ "key": "setting.auto_match_enabled", "operator": "equal", "operand": true },
{ "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true },
{ "key": "following_text", "operator": "regex_contains", "operand": "^(?:\t| |\\)|]|\\}|>|$)", "match_all": true },
{ "key": "preceding_text", "operator": "not_regex_contains", "operand": "[\"a-zA-Z0-9_]$", "match_all": true },
{ "key": "eol_selector", "operator": "not_equal", "operand": "string.quoted.double - punctuation.definition.string.end", "match_all": true }
]
},
{ "keys": ["'"], "command": "insert_snippet", "args": {"contents": "'$1'$0"}, "context":
[
{ "key": "setting.auto_match_enabled", "operator": "equal", "operand": true },
{ "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true },
{ "key": "following_text", "operator": "regex_contains", "operand": "^(?:\t| |\\)|]|\\}|>|$)", "match_all": true },
{ "key": "preceding_text", "operator": "not_regex_contains", "operand": "['a-zA-Z0-9_]$", "match_all": true },
{ "key": "eol_selector", "operator": "not_equal", "operand": "string.quoted.single - punctuation.definition.string.end", "match_all": true }
]
},
]

Related

filter jqgrid with multiple "and" and "or" conditions

I want to filter jQGrid using below search criteria
Name="Mark" and Age=25 and (city="NY" or city="FL") and (company="xyz" or company="zyx")
below is my search string
{
"groupOp": "AND",
"rules": [{
"field": "Name",
"op": "eq",
"data": "Mark"
}, {
"field": "Age",
"op": "eq",
"data": "25"
}],
"groups": [{
"groupOp": "OR",
"rules": [{
"field": "city",
"op": "eq",
"data": "NY"
},
{
"field": "city",
"op": "eq",
"data": "FL"
}
],
"groups": [{
"groupOp": "OR",
"rules": [{
"field": "company",
"op": "eq",
"data": "xyz"
},
{
"field": "company",
"op": "eq",
"data": "zyx"
}
]
}]
}]
}
and
postData: {
filters: above string
},
but this search is not working. please help
It seems that you have an error in the last "groups" part. The correct filter should looks like
{
"groupOp": "AND",
"rules": [
{ "field": "Name", "op": "eq", "data": "Mark" },
{ "field": "Age", "op": "eq", "data": "25" }
],
"groups": [
{
"groupOp": "OR",
"rules": [
{ "field": "city", "op": "eq", "data": "NY" },
{ "field": "city", "op": "eq", "data": "FL" }
],
"groups": []
},
{
"groupOp": "OR",
"rules": [
{ "field": "company", "op": "eq", "data": "xyz" },
{ "field": "company", "op": "eq", "data": "zyx" }
],
"groups": []
}
]
}
Additionally, I'd strictly recommend you to include the version of jqGrid, which you use (can use) and the fork (free jqGrid, commercial Guriddo jqGrid JS or an old jqGrid in version <=4.7).
If you really use "free jqGrid" (not an old jqGrid in version <=4.7), then you can use "IN" operator with local dataset. The value should be comma-separated list of values and the
{
"groupOp": "AND",
"rules": [
{ "field": "Name", "op": "eq", "data": "Mark" },
{ "field": "Age", "op": "eq", "data": "25" },
{ "field": "city", "op": "eq", "data": "NY,FL" },
{ "field": "company", "op": "eq", "data": "xyz,zyx" }
]
}
Additionally free jqGrid allows to replace the default comma separator (which could be included in some company names) to any alternative symbol defined by jqGrid option inFilterSeparator.

"Match" and "Range" "DSL query" in elastic search doesn't work?

can anyone help ?
the query is run successfully as the separated "match query" and "range query" , but i get error when run this
this is my query but i cant get the result :
GET composition_value/composition/_count
{
"query": {
"nested": {
"path": "value",
"query": {
"match": {
"value.composition.content.data.events.data.items.name.value": "systolic"
},
"range": {
"value.composition.content.data.events.data.items.value.magnitude": {
"gte": 10,
"lte": 99
}
}
}
}
}
}
here is the error , result of the query:
{
"error": {
"root_cause": [
{
"type": "parsing_exception",
"reason": "[match] malformed query, expected [END_OBJECT] but found [FIELD_NAME]",
"line": 10,
"col": 9
}
],
"type": "parsing_exception",
"reason": "[match] malformed query, expected [END_OBJECT] but found [FIELD_NAME]",
"line": 10,
"col": 9
},
"status": 400
}
Edited
the problem is i want just "magnitude" filed in "systolic" not other
Here is the main Document i search on it:
{
"composition": {
"name": {
"value": "Avaexample1"
},
"archetype_details": {
"archetype_id": {
"value": "openEHR-EHR-COMPOSITION.avaexample1.v0"
},
"template_id": {
"value": "New Template"
},
"rm_version": "1.0.2"
},
"language": {
"terminology_id": {
"value": "ISO_639-1"
},
"code_string": "en"
},
"territory": {
"terminology_id": {
"value": "ISO_3166-1"
},
"code_string": "UY"
},
"category": {
"value": "event",
"defining_code": {
"terminology_id": {
"value": "openehr"
},
"code_string": "433"
}
},
"composer": {
"external_ref": {
"id": {
"value": "ecd01eaf-775a-43c9-8b4b-1a9ba0257568",
"_xsi:type": "HIER_OBJECT_ID"
},
"namespace": "DEMOGRAPHIC",
"type": "PERSON"
},
"name": "Dr. Yamamoto",
"_xsi:type": "PARTY_IDENTIFIED"
},
"context": {
"start_time": {
"value": "20170723T122153,184+0430"
},
"setting": {
"value": "Hospital B",
"defining_code": {
"terminology_id": {
"value": "openehr"
},
"code_string": "229"
}
}
},
"content": {
"name": {
"value": "Blood pressure"
},
"language": {
"terminology_id": {
"value": "ISO_639-1"
},
"code_string": "en"
},
"encoding": {
"terminology_id": {
"value": "Unicode"
},
"code_string": "UTF-8"
},
"subject": {
"_xsi:type": "PARTY_SELF"
},
"protocol": {
"name": {
"value": "list structure"
},
"items": [{
"name": {
"value": "Cuff size"
},
"value": {
"value": "Adult Thigh",
"defining_code": {
"terminology_id": {
"value": "local"
},
"code_string": "at0015"
},
"_xsi:type": "DV_CODED_TEXT"
},
"_archetype_node_id": "at0013",
"_xsi:type": "ELEMENT"
},
{
"name": {
"value": "Location"
},
"items": [{
"name": {
"value": "Non-invasive locations"
},
"value": {
"value": "Right arm",
"defining_code": {
"terminology_id": {
"value": "local"
},
"code_string": "at0025"
},
"_xsi:type": "DV_CODED_TEXT"
},
"_archetype_node_id": "at0014.1",
"_xsi:type": "ELEMENT"
},
{
"name": {
"value": "Intra-arterial locations"
},
"value": {
"value": "Radial Left",
"defining_code": {
"terminology_id": {
"value": "local"
},
"code_string": "at0.1059"
},
"_xsi:type": "DV_CODED_TEXT"
},
"_archetype_node_id": "at0.1058",
"_xsi:type": "ELEMENT"
},
{
"name": {
"value": "Specific location"
},
"value": {
"value": "UzuefCsHBYVwKK,WzicypjaKpjqHAw",
"defining_code": {
"terminology_id": {
"value": "terminology_not_specified_as_constraint_or_referenceSetUri_in_opt"
},
"code_string": "1002779"
},
"_xsi:type": "DV_CODED_TEXT"
},
"_archetype_node_id": "at1034",
"_xsi:type": "ELEMENT"
}],
"_archetype_node_id": "at1033",
"_xsi:type": "CLUSTER"
},
{
"name": {
"value": "Method"
},
"value": {
"value": "Auscultation",
"defining_code": {
"terminology_id": {
"value": "local"
},
"code_string": "at1036"
},
"_xsi:type": "DV_CODED_TEXT"
},
"_archetype_node_id": "at1035",
"_xsi:type": "ELEMENT"
},
{
"name": {
"value": "Mean Arterial Pressure Formula"
},
"value": {
"value": "jErCuglJdkV,KjmPwC.xxwoGTikkIprmZwVyTrfZIrm WCzMcIaQG MkLOeqjFbDVJxQZYLWyZgiIszVuyytmxdOIFsdPTxyz jct.SqjOedXuxSl REmuIrUnpMuqgIZaZIapQVHDoPvnQSivESJPTOptqDxAxwVpTJKIAL ldtMyUOWj,ym,AYZTzJugWFhLOdkJXhTFewmHSRBFwKEouqMVPgbnmrTzfLNoncDDgpuBPCrdyojWM.UMKuqe",
"_xsi:type": "DV_TEXT"
},
"_archetype_node_id": "at1038",
"_xsi:type": "ELEMENT"
},
{
"name": {
"value": "Diastolic endpoint"
},
"value": {
"value": "Phase IV",
"defining_code": {
"terminology_id": {
"value": "local"
},
"code_string": "at1011"
},
"_xsi:type": "DV_CODED_TEXT"
},
"_archetype_node_id": "at1010",
"_xsi:type": "ELEMENT"
},
{
"name": {
"value": "Suitable for graphing?"
},
"value": {
"value": "true",
"_xsi:type": "DV_BOOLEAN"
},
"_archetype_node_id": "at0.1054",
"_xsi:type": "ELEMENT"
}],
"_archetype_node_id": "at0011",
"_xsi:type": "ITEM_TREE"
},
"data": {
"name": {
"value": "history"
},
"origin": {
"value": "20170723T122153,605+0430",
"_xsi:type": "DV_DATE_TIME"
},
"events": {
"name": {
"value": "any event"
},
"time": {
"value": "20170723T122153,621+0430",
"_xsi:type": "DV_DATE_TIME"
},
"data": {
"name": {
"value": "blood pressure"
},
"items": [{
"name": {
"value": "Systolic"
},
"value": {
"magnitude": "70",
"units": "cm[Hg]",
"_xsi:type": "DV_QUANTITY"
},
"_archetype_node_id": "at0004",
"_xsi:type": "ELEMENT"
},
{
"name": {
"value": "Diastolic"
},
"value": {
"magnitude": "80",
"units": "cm[Hg]",
"_xsi:type": "DV_QUANTITY"
},
"_archetype_node_id": "at0005",
"_xsi:type": "ELEMENT"
},
{
"name": {
"value": "Mean Arterial Pressure"
},
"value": {
"magnitude": "615",
"units": "mm[Hg]",
"_xsi:type": "DV_QUANTITY"
},
"_archetype_node_id": "at1006",
"_xsi:type": "ELEMENT"
},
{
"name": {
"value": "Pulse Pressure"
},
"value": {
"magnitude": "324",
"units": "mm[Hg]",
"_xsi:type": "DV_QUANTITY"
},
"_archetype_node_id": "at1007",
"_xsi:type": "ELEMENT"
},
{
"name": {
"value": "Comment"
},
"value": {
"value": "QppbwmXaKavNSNXmIpkSADyBZ,eFLKjwUomBscVAPHzWQLNTMkvcokamY,NFbcrmLNAlxn.hmpTHRjRNNcIhwfQJUpBpzVohQvoukpZb.ezPmOCcHQNVTcmHeMVShPvMtMFeSXrMeHZstnmikelrCWGMGDEwBKvAabKWDDotsfbMGpETL oifeUyxUxOGFmhwwgDkAjifomZXm.yCIEitsahimjwLwyZyXyOqrJnqcyhNvbhwUwUQtTqeOUiTtm",
"_xsi:type": "DV_TEXT"
},
"_archetype_node_id": "at0033",
"_xsi:type": "ELEMENT"
}],
"_archetype_node_id": "at0003",
"_xsi:type": "ITEM_TREE"
},
"state": {
"name": {
"value": "state structure"
},
"items": [{
"name": {
"value": "Position"
},
"value": {
"value": "Standing",
"defining_code": {
"terminology_id": {
"value": "local"
},
"code_string": "at1000"
},
"_xsi:type": "DV_CODED_TEXT"
},
"_archetype_node_id": "at0008",
"_xsi:type": "ELEMENT"
},
{
"name": {
"value": "Confounding factors"
},
"value": {
"value": ",dUW hFmdIEDsQN ifxzaVoIUXcwrI,bRnmIWpd udD,,HWqrLzDpaybOKgXWNNCZgjACXlKNUQCIXpWgMUWumXo oNWATIhPe BBb,GxdciYgTfMEpeHtiuV,DfESmNFOxWANjyskrgWhANaViKHcSyHfUVdPiTfFi.,XPSrJamSCfUrOYHBO,axGQenCnGrdFEHlPNxc RwzAUzjwRdNAdOqVAYmFoVkPLlhjgajECMYXfoTqrYKtTP.BiIpo",
"_xsi:type": "DV_TEXT"
},
"_archetype_node_id": "at1052",
"_xsi:type": "ELEMENT"
},
{
"name": {
"value": "Sleep status"
},
"value": {
"value": "Alert & awake",
"defining_code": {
"terminology_id": {
"value": "local"
},
"code_string": "at1044"
},
"_xsi:type": "DV_CODED_TEXT"
},
"_archetype_node_id": "at1043",
"_xsi:type": "ELEMENT"
},
{
"name": {
"value": "Tilt"
},
"value": {
"magnitude": "-72",
"units": "",
"_xsi:type": "DV_QUANTITY"
},
"_archetype_node_id": "at1005",
"_xsi:type": "ELEMENT"
}],
"_archetype_node_id": "at0007",
"_xsi:type": "ITEM_TREE"
},
"_archetype_node_id": "at0006",
"_xsi:type": "POINT_EVENT"
},
"_archetype_node_id": "at0001",
"_xsi:type": "HISTORY"
},
"_archetype_node_id": "openEHR-EHR-OBSERVATION.blood_pressure-zn.v1",
"_xsi:type": "OBSERVATION"
},
"_xmlns": "http://schemas.openehr.org/v1",
"_xmlns:xsi": "http://www.w3.org/2001/XMLSchema-instance",
"_archetype_node_id": "openEHR-EHR-COMPOSITION.avaexample1.v0"
}
}
As described here, try this:
{
"query": {
"nested": {
"path": "value",
"query": {
"bool": {
"must": [
{
"match": {
"value.composition.content.data.events.data.items.name.value": "systolic"
}
},
{
"range": {
"value.composition.content.data.events.data.items.value.magnitude": {
"gte": 10,
"lte": 99
}
}
}
]
}
}
}
}
}

How to replace Elasticsearch Indices Query

In Elasticsearch 5.0, the Indices Query has been marked as deprecated.
The documentation tells me to "Search on the _index field instead", but it is not obvious to me how to do this. How can I change an example query like this to the new method(s)?
GET /_search
{
"query": {
"bool": {
"minimum_number_should_match": 1,
"should": [
{"indices": {
"indices": ["index1"],
"no_match_query": "none",
"query": {
"bool": {"must": [
{"multi_match": {"fields": ["field1", "field2"], "operator": "or", "query": "foobar", "type": "boolean", "use_dis_max": true}},
{"multi_match": {"fields": ["field1", "field2"], "operator": "or", "query": "xuul", "type": "boolean", "use_dis_max": true}}
]}}
}},
{"indices": {
"indices": ["index2", "index3"],
"no_match_query": "none",
"query": {"bool": {"must": [
{"multi_match": {"fields": ["field1", "field2"], "operator": "or", "query": "foobar", "type": "boolean", "use_dis_max": true}}
]}}}}
]}
}
}
You could try like this:
{
"bool": {
"minimum_number_should_match": 1,
"should": [
{
"bool": {
"filter": [
{
"terms": {
"_index": ["index1"]
}
},
{
"bool": {
"must": [
{
"multi_match": {
"fields": [
"field1",
"field2"
],
"operator": "or",
"query": "foobar",
"type": "boolean",
"use_dis_max": true
}
},
{
"multi_match": {
"fields": [
"field1",
"field2"
],
"operator": "or",
"query": "xuul",
"type": "boolean",
"use_dis_max": true
}
}
]
}
}
]
}
},
{
"bool": {
"filter": [
{
"terms": {
"_index": [
"index2",
"index3"
]
}
},
{
"bool": {
"must": [
{
"multi_match": {
"fields": [
"field1",
"field2"
],
"operator": "or",
"query": "foobar",
"type": "boolean",
"use_dis_max": true
}
}
]
}
}
]
}
}
]
}
}

Query with terms does not work properly

I have this document in Elasticsearch (1.6)
{
"_index": "onkopedia",
"_type": "document_",
"_id": "0afa26afc2d1440a8ed03dac0e8511fc",
"_version": 1,
"_score": null,
"_source": {
"description": "",
"contributors": [ ],
"metaTypeName": "Connector",
"sortableTitle": "mammakarzinom der frau",
"subject": [ ],
"authorizedUsers": [
"Anonymous"
],
"language": "",
"title": "Mammakarzinom der Frau",
"url": "http://dev1.veit-schiele.de:9080/onkopedia/de/onkopedia/guidelines/mammakarzinom-der-frau",
"author": "ajung",
"modified": "2015-05-11T05:21:14",
"metaType": "xmldirector.plonecore.connector",
"content": " Mammakarzinom der Frau Stand: Januar 2013 Autoren der aktuellen .....",
"authorName": "ajung",
"created": "2015-05-11T05:21:14",
"review_state": "published"
},
"sort": [
null
]
}
containing a key
'authorizedUsers': ['Anonymous']
The following query is supposed to return the document above however it does not:
{
"sort": [
"_score"
],
"from": 0,
"fields": [
"url",
"title",
"description",
"metaType",
"metaTypeName",
"author",
"authorName",
"contributors",
"modified",
"subject",
"review_state",
"language",
"content"
],
"query": {
"filtered": {
"filter": {
"and": [
{
"terms": {
"execution": "or",
"metaType": [
"Document",
"FormFolder",
"Collection",
"Discussion Item",
"News Item",
"xmldirector.plonecore.connector",
"CaptchaField"
]
}
},
{
"terms": {
"execution": "or",
"authorizedUsers": [
"Manager",
"Authenticated",
"Anonymous",
"user:ajung"
]
}
}
]
},
"query": {
"query_string": {
"query": "mammakarzinom",
"default_operator": "AND",
"fields": [
"title^3",
"contributors^2",
"subject^2",
"description",
"content"
]
}
}
}
},
"highlight": {
"fields": {
"content": {
"fragment_size": 250,
"number_of_fragments": 3
},
"description": {
"fragment_size": 250,
"number_of_fragments": 2
},
"title": {
"number_of_fragments": 0
}
}
},
"size": 15
}
The query without the filter for 'authorizedUsers' does return the document.
Why? 'Anonymous' as value for 'authorizedUsers' is available within the query, so I would expect that the document would be found by the first query, or?
{
"sort": [
"_score"
],
"from": 0,
"fields": [
"url",
"title",
"description",
"metaType",
"metaTypeName",
"author",
"authorName",
"contributors",
"modified",
"subject",
"review_state",
"language",
"content"
],
"query": {
"filtered": {
"filter": {
"and": [
{
"terms": {
"execution": "or",
"metaType": [
"Document",
"FormFolder",
"Collection",
"Discussion Item",
"News Item",
"xmldirector.plonecore.connector",
"CaptchaField"
]
}
}
]
},
"query": {
"query_string": {
"query": "mammakarzinom",
"default_operator": "AND",
"fields": [
"title^3",
"contributors^2",
"subject^2",
"description",
"content"
]
}
}
}
},
"highlight": {
"fields": {
"content": {
"fragment_size": 250,
"number_of_fragments": 3
},
"description": {
"fragment_size": 250,
"number_of_fragments": 2
},
"title": {
"number_of_fragments": 0
}
}
},
"size": 15
}
Probably your analyzer for authorizedUsers field is lowercasing the value itself. So, in your index the actual values is anonymous (lowercase a).
Try this filter:
{
"terms": {
"execution": "or",
"authorizedUsers": [
"manager",
"authenticated",
"anonymous",
"user:ajung"
]
}
}
meaning, search the index with the values that are actually there.
One more thing: terms is not analyzing the input text. This means that if you search for Anonymous then this is what it will look into the index. Since you have anonymous in the index, it will not match.

Sublime Text 2 double quote font-style depends on file extension?

The auto-pairing of double quotes is a really strange issue that I thought I'd solved but still persists. The issue is that for files of the extension .php, .html, the default font-style of auto-paired double quotes is not parseable. To show you what I mean, notice the font-style of the double quotes in the <div> on the left. Whereas with .js and .css files, the double quote auto-pairing has the proper font-style as shown in the <div> on the right>.
This must be a setting somewhere but I don't know Sublime Text2 (Mac OSX) so well. Thoughts?
With the huge help from #JamieJag I've isolated the problem. Shift+" was producing what Sublime calls "typographical" quotes and not the double quotes which are parseable as part of PHP or HTML code.
To fix the problem, I commented out everything in my SublimeText2 preferences->key bindings->user.
It's unclear to me whether one or all of these JSON object is responsible for the problematic behavior (though I'd guess the first JSON looks like the offender) but so far just commenting out the entire array solved my problem.
/*[
// Auto-pair typographical quotes
{ "keys": ["\""], "command": "insert_snippet", "args": {"contents": "“$0”"}, "context":
[
{ "key": "setting.auto_match_enabled", "operator": "equal", "operand": true },
{ "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true },
{ "key": "following_text", "operator": "regex_contains", "operand": "^(?:\t| |\\)|”|;|\\}|$)", "match_all": true },
{ "key": "selector", "operator": "equal", "operand": "text", "match_all": true }
]
},
{ "keys": ["\""], "command": "insert_snippet", "args": {"contents": "“${0:$SELECTION}”"}, "context":
[
{ "key": "setting.auto_match_enabled", "operator": "equal", "operand": true },
{ "key": "selection_empty", "operator": "equal", "operand": false, "match_all": true },
{ "key": "selector", "operator": "equal", "operand": "text", "match_all": true }
]
},
{ "keys": ["\""], "command": "move", "args": {"by": "characters", "forward": true}, "context":
[
{ "key": "setting.auto_match_enabled", "operator": "equal", "operand": true },
{ "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true },
{ "key": "following_text", "operator": "regex_contains", "operand": "^\\”", "match_all": true },
{ "key": "selector", "operator": "equal", "operand": "text", "match_all": true }
]
},
// Smart quotes before & after word
{ "keys": ["\""], "command": "insert_snippet", "args": {"contents": "“$0"}, "context":
[
{ "key": "setting.auto_match_enabled", "operator": "equal", "operand": true },
{ "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true },
{ "key": "following_text", "operator": "regex_contains", "operand": "^\\S", "match_all": true },
{ "key": "selector", "operator": "equal", "operand": "text", "match_all": true }
]
},
{ "keys": ["\""], "command": "insert_snippet", "args": {"contents": "”$0"}, "context":
[
{ "key": "setting.auto_match_enabled", "operator": "equal", "operand": true },
{ "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true },
{ "key": "preceding_text", "operator": "regex_contains", "operand": "^\\S", "match_all": true },
{ "key": "selector", "operator": "equal", "operand": "text", "match_all": true }
]
}
]*/

Resources