Sublime text: How to disable automatching 'quotes' - sublimetext3

Here's my problem: In common lisp, a 'single quote' is not used for strings and thus doesn't come in pairs with another quote, so sublime text auto-inserting another quote does more harm than good. How do I disable that option just for lisp and just for single quotes?

Just add a keybinding to your keymap (which you can find in preferences, key bindings) and in the user tab paste this:
{
"keys": ["'"], "command": "insert", "args": {"characters": "'"},
"context":
[
{ "key": "selector", "operator": "equal", "operand": "source.lisp" }
]
},
Let me know if you need anything else! I tested it in sublime text (I use it too)

If you go into Preferences > Settings on Sublime Text 3, you should see various preferences that you can control manually. This line controls the auto-pairing of quotes:
// Controls auto pairing of quotes, brackets etc
"auto_match_enabled": true,
To overwrite it, add "auto_match_enabled": false, to the right pane (user prefs) between the brackets and save to update your preferences. If you already have preferences in the right pane, be sure to separate with a ',' like with json properties.

Related

Sublime Test 4; Cancel "Goto Definition" (F12)

I noticed that the behavior in Sublime Text 4 seems to have changed in the latest release. Previously I could hit F12 to bring up all the definitions of a symbol with a little pop-up showing a list of all instances. I could preview them all using the arrow keys to navigate and then hit ESC to return from where I came.
It seems that since the latest version, hitting escape lands me on whichever page I was previewing. Previously this would require me pressing "enter".
Does anyone know if this is now a setting or how I can get the old functionality back?
I ended up finding one workaround based on koe's suggestion. It seems like if you switch tabs before hitting escape, Sublime exhibits the desired behavior. With this in mind I tried to bind a keystroke to switch tabs and the issue the "cancel" command and it worked.
I bound this command chain to the "escape" key and it has restored my workflow. I'm not sure if this will have implications for using escape in another context but I'll update if I find out anything else.
{ "keys": ["escape"],
"command": "chain",
"args": {
"commands": [
["next_view_in_stack"],
["cancel"],
]
}
},
EDIT: Above version doesn't handle ctrl+p followed by esc. Also doesn't allow find panel to be close by escape. Was able to modify it to be more targeted.
{ "keys": ["escape"],
"command": "chain",
"args": {
"commands": [
["next_view_in_stack"],
["prev_view_in_stack"],
["cancel"],
]
},
"context":
[
{ "key": "overlay_visible", "operator": "equal", "operand": true },
{ "key": "panel_has_focus", "operator": "equal", "operand": false }
]
},

Automatically convert indentation from 2 to 4 spaces in Sublime Text 3

There are a few topics about auto-conversion of the indentation in Sublime Text, but I didn't find the way to do it automatically.
Many files I download have indentation of 2, which I hate, so I want to convert them to 4. What I do is:
Select Tab size: 2
Convert indentation to Tabs
Select Tab size: 4
Convert indentation to Spaces
I don't think I need to mention that it's too much work for every single file. Some people suggest Reindent option, but for my experience, it almost never works correctly.
Is there some build-it way, or perhaps a package to convert indentation in one step?
Converting indentation to a personal preference can be a tedious task in Sublime Text which, as you observe, gets mentioned on StackOverflow quite regularly. In fact 4 years ago I answered a question which lists almost exactly the steps you've listed in your question.
I too have found the 3 Command Pallette reindent commands to be a little temperamental, sometimes working as I think they ought to and sometimes doing (what appears to be) nothing at all. But no matter...
There is of course a way to perform the actions you've listed in one step; use a macro.
Copy and paste the macro code below and save it in your User folder as IndentationTo4Spaces.sublime-macro.
[
{ "command": "set_setting", "args": {"setting": "tab_size", "value": 2} },
{ "command": "unexpand_tabs", "args": {"set_translate_tabs": true} },
{ "command": "set_setting", "args": {"setting": "tab_size", "value": 4} },
{ "command": "expand_tabs", "args": {"set_translate_tabs": true} }
]
You could run the macro from the menu Tools --> Macros --> User --> IndentationTo4Spaces, set up a key binding, or add an entry to the Command Pallette.
// Add keys to: Packages/User/Default (Linux/OSX/Windows).sublime-keymap
{ "keys": ["ctrl+shift+y"], "command": "run_macro_file",
"args": {"file": "res://Packages/User/IndentationTo4Spaces.sublime-macro"} },
// Add command to: Packages/User/Default.sublime-commands
{ "caption": "Convert Indentation To 4 Spaces", "command": "run_macro_file",
"args": {"file": "res://Packages/User/IndentationTo4Spaces.sublime-macro"} },

Sublime Text 3 disable SHIFT+Delete copying the selected text

Is it possible to disable this behaviour? It's possible in Visual Studio but I would like to change this also on ST3.
I think that the original question is not about removing the functionality of shift+delete, but only removing the copy function from it. So I'd like to post my answer here in case somebody would be looking for specifically this.
I found right_delete, mentioned in the comments, to be rather inconvenient, because you would need your cursor to be at the beginning of the line in order to work. I found that line deletion is set to ctrl+shift+k by default (on Windows), so I just used its macro for shift+delete.
So here's the line I added to my Preferences > Key Bindings:
{ "keys": ["shift+delete"], "command": "run_macro_file", "args": {"file": "res://Packages/Default/Delete Line.sublime-macro"} },
This way you don't need to worry about the position of your cursor, as long as it's within the wanted line.
On Windows/Linux, the Default key bindings map Shift+Delete to the cut command:
{ "keys": ["shift+delete"], "command": "cut" },
In order to disable that behaviour, you can select Preferences > Key Bindings from the menu, and add the following to the binding to the right hand pane:
{ "keys": ["shift+delete"], "command": "noop" },
Alternately you can replace noop with some other command that you would rather perform in this case instead, should you want to use the key for something else.

Sublime 3 abbreviation expander

I'm having an annoying problem on Sublime 3 while working on SASS files. After I type a colon : and then hit tab, it outputs another colon plus a semicolon ::;. Also it changes my declarations with what seems to be recommendations or something. For instance if I type in width: and then hit the tab, it changes width: to windows:.
I've been researching around to see what could cause this. I added "tab_completion": false and "auto_complete": false to my User sublime settings but that didn't fix it. Then I found that it might be the Emmet package that is causing this so I added "disable_tab_abbreviations_for_scopes": "source.scss, source.css" to my Emmet User settings but that didn't fix it either. Each time I've made a settings change I've closed Sublime and restarted.
I know I can use shift + tab, but I really would like to find out what is causing this as I'm starting a big SASS project and this is getting really annoying. Any help would be appreciated.
Thanx
I think the easiest way to do this is to add a keybinding to force ST to the desired behavior instead of changing the settings to entries you might not want.
Just add this to your keymap and a tab will be inserted in the described scenario:
{
"keys": ["tab"],
"command": "insert",
"args": {"characters": "\t"},
"context":
[
{ "key": "selector", "operator": "equal", "operand": "source.css, source.sass" },
{ "key": "preceding_text", "operator": "regex_contains", "operand": ":$" }
]
},

In Sublime Text 3, can I send a selection of a do file to Stata?

This SO question led me to try Sublime Text 3 as a replacement for Stata's do file editor on Linux (full instructions here).
Syntax highlighting works and a Ctrl+B shortcut sends the whole do file to Stata.
Is there a way to send only a selection of lines to Stata?
Yes you can.
First you need to find the name of the python function that does it. For the SublimeStata Enhanced package , it corresponds to the function text_2_stataCommand in the file text_2_stata.py.
Second, you need to add a shortcut for this function in the Key Binding user file, where you put the function name in the command field (the suffix Command must be removed and separations are indicated by underscores instead of capital letters).
{ "keys": ["super+shift+b"],
"command":"text_2_stata",
"context": [
{"key": "selector", "operator": "equal", "operand": "source.stata"},]
},

Resources