Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Modify auto_match of quotes, adding an additional quoting character to Sublime Text 2

Sublime Text 2 very helpfully closes all of my quotes.
Is it possible to modify which characters it does this with?

For example, if I would like to add `backticks` to the list.


@skuroda's answer works great. On Mac OSX, go to

Sublime Text 2 > Preferences > Key Bindings - User

and paste in the text there. Make sure it is ultimately wrapped in [...] (square brackets).

like image 542
Ricardo Saporta Avatar asked May 02 '13 14:05

Ricardo Saporta


Video Answer


1 Answers

The auto pairing is simply a few specialized keybindings. This should allow you to auto pair backticks. It should also serve as a guide for if you want to create other auto paired symbols.

{ "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 }
    ]
},
{ "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 }
    ]
},
{ "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 }
    ]
},
{ "keys": ["backspace"], "command": "run_macro_file", "args": {"file": "Packages/Default/Delete Left Right.sublime-macro"}, "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": "`$", "match_all": true },
        { "key": "following_text", "operator": "regex_contains", "operand": "^`", "match_all": true }
    ]
}

Simply insert that code block into your user key bindings.

I just used the default keybinding as a template, so you may need to further modify some of the context to get it to work perfectly.

like image 55
skuroda Avatar answered Sep 21 '22 02:09

skuroda