sublimehq / sublime_text

Issue tracker for Sublime Text
https://www.sublimetext.com
807 stars 39 forks source link

Several crashes while typing text #1832

Closed evandrocoan closed 7 years ago

evandrocoan commented 7 years ago

Summary

When the crash occurred, I could copy some info from Visual Studio:

Unhandled exception at 0x00AC7691 in sublime_text.exe: 0xC000041D: An unhandled exception was encountered during a user callback. occurred

It crashed from yesterday, to today twice while was typing text. On this screen shot points to the exactly moment when it crashed. I was typing Bu, then the autocomplete pops up. But suddenly Sublime Text stopped, and the windows Crash Dialog/Report showed up:

image

Then it asked to open with my debugger Visual Studio 2017, and when it opened it asked for the debug symbols. But I forgot to copy the whole call stack from the Visual Studio, but I have a picture:

image

untitled

But I do not have them. Anyway, I cannot post here the dump file, because all the times Sublime Text is crashing now, the dump file has size 0. The dump file generated this time had the name 1c3144ee-5221-46fc-8d66-5ae3bac633fa.dmp, but as the others, it had size 0, i.e., the file is completely empty:

image

Dump file view from inside it:

image

Expected behavior

Not crash while I am using the program.

Actual behavior

The program crashes when I am typing simple long texts.

Steps to reproduce

I which I knew steps to reproduce it. For now the crashes are completely random. But they all seem to have one thing in common. I am typing text. May be related to the auto complete?

I use this auto complete for words auto complete form all views:

```python def on_query_completions(self, view, prefix, locations): ... the called function for text files is this: def all_views_autocomplete( self, active_view, prefix, locations, g_words_set ): # print_debug( 16, "AMXXEditor::all_views_autocomplete(5)" ) # print_debug( 16, "( all_views_autocomplete ) g_words_set size: %d" % len( g_words_set ) ) words_set = g_words_set.copy() words_list = [] start_time = time.time() if g_word_autocomplete: view_words = None if len( locations ) > 0: view_words = active_view.extract_completions( prefix, locations[0] ) else: view_words = active_view.extract_completions( prefix ) view_words = fix_truncation( active_view, view_words ) for word in view_words: # Remove the annoying `(` on the string word = word.replace('$', '\\$').split('(')[0] if word not in words_set: words_set.add( word ) words_list.append( ( word, word ) ) if time.time() - start_time > 0.05: break # print_debug( 16, "( all_views_autocomplete ) Current views loop took: %f" % ( time.time() - start_time ) ) # print_debug( 16, "( all_views_autocomplete ) words_set size: %d" % len( words_set ) ) if g_use_all_autocomplete: # Limit number of views but always include the active view. This # view goes first to prioritize matches close to cursor position. views = sublime.active_window().views() buffers_id_set = set() view_words = None view_base_name = None buffers_id_set.add( active_view.buffer_id() ) for view in views: view_buffer_id = view.buffer_id() # print_debug( 16, "( all_views_autocomplete ) view: %d" % view.id() ) # print_debug( 16, "( all_views_autocomplete ) buffers_id: %d" % view_buffer_id ) # print_debug( 16, "( all_views_autocomplete ) buffers_id_set size: %d" % len( buffers_id_set ) ) if view_buffer_id not in buffers_id_set: buffers_id_set.add( view_buffer_id ) view_words = view.extract_completions(prefix) view_words = fix_truncation(view, view_words) view_base_name = view.file_name() if view_base_name is None: view_base_name = "" else: view_base_name = os.path.basename( view_base_name ) for word in view_words: # Remove the annoying `(` on the string word = word.replace('$', '\\$').split('(')[0] if word not in words_set: # print_debug( 16, "( all_views_autocomplete ) word: %s" % word ) words_set.add( word ) words_list.append( ( word + ' \t' + view_base_name, word ) ) if time.time() - start_time > 0.3: # print_debug( 16, "( all_views_autocomplete ) Breaking all views loop after: %f" % time.time() - start_time ) # print_debug( 16, "( all_views_autocomplete ) words_set size: %d" % len( words_set ) ) return words_list # print_debug( 16, "( all_views_autocomplete ) All views loop took: %f" % ( time.time() - start_time ) ) # print_debug( 16, "( all_views_autocomplete ) words_set size: %d" % len( words_set ) ) return words_list ```


1. https://github.com/evandrocoan/SublimeAMXX_Editor/blob/master/AMXXEditor.py#L346-L500 ### Environment * Operating system and version: * Windows 10 build 15063 * Mac OS ... * Linux ... * Monitor: * Resolution 1920x1080 * `dpi_scale` used in ST 1.0 * Sublime Text: * Build 3141 * 32 bit
evandrocoan commented 7 years ago

Seconds crash just now. This time also, the dump file has size 0. But I could not start the debugger. I just had Updated Visual Studio version to 15.2 and this should be related.

I had just pressed the o key and the screen froze like this, but as we may notice, the o character had not showed up on the screen yet. Then we may confirm the crash happened after the command auto_complete had been called by https://github.com/evandrocoan/SublimeOpenAutoCompletion, but before the command view.run_command("insert", {"characters": kargs["keystroke"]}) being called, or at least completed its execution and inserted the o character:

untitled

Could be related to my other package https://github.com/evandrocoan/SublimeOpenAutoCompletion mentioned on the issue:

  1. https://github.com/SublimeTextIssues/Core/issues/1817 Undo more history steps when inserting only one character each time

Perhaps now we may start to think about steps on how to reproduce the problem. This seems to be caused the the continuous and extensive calls to auto_complete due the package SublimeOpenAutoCompletion. So, if someone would want to reproduce this, may think in to install such package, which is pretty simple I am going to paste its main code in here:


import sublime
import sublime_plugin

class OpenAutoCompletionCommand(sublime_plugin.TextCommand):

    def run(self, edit, **kargs):
        view = self.view
        view.run_command("insert", {"characters": kargs["keystroke"]})

        if not view.settings().get('is_widget'):
            window = view.window()
            window.run_command("auto_complete", {'disable_auto_insert': True, 'next_completion_if_showing': False})

Just is missing the the keybindings to make this work, which follows:

```javascript [ // Run command on space // https://forum.sublimetext.com/t/run-command-on-space/28198 { "keys": ["a"], "command": "open_auto_completion", "args": {"keystroke": "a" }, "context": [ { "key": "auto_complete_visible", "operator": "equal", "operand": false } ] }, { "keys": ["b"], "command": "open_auto_completion", "args": {"keystroke": "b" }, "context": [ { "key": "auto_complete_visible", "operator": "equal", "operand": false } ] }, { "keys": ["c"], "command": "open_auto_completion", "args": {"keystroke": "c" }, "context": [ { "key": "auto_complete_visible", "operator": "equal", "operand": false } ] }, { "keys": ["d"], "command": "open_auto_completion", "args": {"keystroke": "d" }, "context": [ { "key": "auto_complete_visible", "operator": "equal", "operand": false } ] }, { "keys": ["e"], "command": "open_auto_completion", "args": {"keystroke": "e" }, "context": [ { "key": "auto_complete_visible", "operator": "equal", "operand": false } ] }, { "keys": ["f"], "command": "open_auto_completion", "args": {"keystroke": "f" }, "context": [ { "key": "auto_complete_visible", "operator": "equal", "operand": false } ] }, { "keys": ["g"], "command": "open_auto_completion", "args": {"keystroke": "g" }, "context": [ { "key": "auto_complete_visible", "operator": "equal", "operand": false } ] }, { "keys": ["h"], "command": "open_auto_completion", "args": {"keystroke": "h" }, "context": [ { "key": "auto_complete_visible", "operator": "equal", "operand": false } ] }, { "keys": ["i"], "command": "open_auto_completion", "args": {"keystroke": "i" }, "context": [ { "key": "auto_complete_visible", "operator": "equal", "operand": false } ] }, { "keys": ["j"], "command": "open_auto_completion", "args": {"keystroke": "j" }, "context": [ { "key": "auto_complete_visible", "operator": "equal", "operand": false } ] }, { "keys": ["k"], "command": "open_auto_completion", "args": {"keystroke": "k" }, "context": [ { "key": "auto_complete_visible", "operator": "equal", "operand": false } ] }, { "keys": ["l"], "command": "open_auto_completion", "args": {"keystroke": "l" }, "context": [ { "key": "auto_complete_visible", "operator": "equal", "operand": false } ] }, { "keys": ["m"], "command": "open_auto_completion", "args": {"keystroke": "m" }, "context": [ { "key": "auto_complete_visible", "operator": "equal", "operand": false } ] }, { "keys": ["n"], "command": "open_auto_completion", "args": {"keystroke": "n" }, "context": [ { "key": "auto_complete_visible", "operator": "equal", "operand": false } ] }, { "keys": ["o"], "command": "open_auto_completion", "args": {"keystroke": "o" }, "context": [ { "key": "auto_complete_visible", "operator": "equal", "operand": false } ] }, { "keys": ["p"], "command": "open_auto_completion", "args": {"keystroke": "p" }, "context": [ { "key": "auto_complete_visible", "operator": "equal", "operand": false } ] }, { "keys": ["q"], "command": "open_auto_completion", "args": {"keystroke": "q" }, "context": [ { "key": "auto_complete_visible", "operator": "equal", "operand": false } ] }, { "keys": ["r"], "command": "open_auto_completion", "args": {"keystroke": "r" }, "context": [ { "key": "auto_complete_visible", "operator": "equal", "operand": false } ] }, { "keys": ["s"], "command": "open_auto_completion", "args": {"keystroke": "s" }, "context": [ { "key": "auto_complete_visible", "operator": "equal", "operand": false } ] }, { "keys": ["t"], "command": "open_auto_completion", "args": {"keystroke": "t" }, "context": [ { "key": "auto_complete_visible", "operator": "equal", "operand": false } ] }, { "keys": ["u"], "command": "open_auto_completion", "args": {"keystroke": "u" }, "context": [ { "key": "auto_complete_visible", "operator": "equal", "operand": false } ] }, { "keys": ["v"], "command": "open_auto_completion", "args": {"keystroke": "v" }, "context": [ { "key": "auto_complete_visible", "operator": "equal", "operand": false } ] }, { "keys": ["w"], "command": "open_auto_completion", "args": {"keystroke": "w" }, "context": [ { "key": "auto_complete_visible", "operator": "equal", "operand": false } ] }, { "keys": ["x"], "command": "open_auto_completion", "args": {"keystroke": "x" }, "context": [ { "key": "auto_complete_visible", "operator": "equal", "operand": false } ] }, { "keys": ["y"], "command": "open_auto_completion", "args": {"keystroke": "y" }, "context": [ { "key": "auto_complete_visible", "operator": "equal", "operand": false } ] }, { "keys": ["z"], "command": "open_auto_completion", "args": {"keystroke": "z" }, "context": [ { "key": "auto_complete_visible", "operator": "equal", "operand": false } ] }, { "keys": ["A"], "command": "open_auto_completion", "args": {"keystroke": "A" }, "context": [ { "key": "auto_complete_visible", "operator": "equal", "operand": false } ] }, { "keys": ["B"], "command": "open_auto_completion", "args": {"keystroke": "B" }, "context": [ { "key": "auto_complete_visible", "operator": "equal", "operand": false } ] }, { "keys": ["C"], "command": "open_auto_completion", "args": {"keystroke": "C" }, "context": [ { "key": "auto_complete_visible", "operator": "equal", "operand": false } ] }, { "keys": ["D"], "command": "open_auto_completion", "args": {"keystroke": "D" }, "context": [ { "key": "auto_complete_visible", "operator": "equal", "operand": false } ] }, { "keys": ["E"], "command": "open_auto_completion", "args": {"keystroke": "E" }, "context": [ { "key": "auto_complete_visible", "operator": "equal", "operand": false } ] }, { "keys": ["F"], "command": "open_auto_completion", "args": {"keystroke": "F" }, "context": [ { "key": "auto_complete_visible", "operator": "equal", "operand": false } ] }, { "keys": ["G"], "command": "open_auto_completion", "args": {"keystroke": "G" }, "context": [ { "key": "auto_complete_visible", "operator": "equal", "operand": false } ] }, { "keys": ["H"], "command": "open_auto_completion", "args": {"keystroke": "H" }, "context": [ { "key": "auto_complete_visible", "operator": "equal", "operand": false } ] }, { "keys": ["I"], "command": "open_auto_completion", "args": {"keystroke": "I" }, "context": [ { "key": "auto_complete_visible", "operator": "equal", "operand": false } ] }, { "keys": ["J"], "command": "open_auto_completion", "args": {"keystroke": "J" }, "context": [ { "key": "auto_complete_visible", "operator": "equal", "operand": false } ] }, { "keys": ["K"], "command": "open_auto_completion", "args": {"keystroke": "K" }, "context": [ { "key": "auto_complete_visible", "operator": "equal", "operand": false } ] }, { "keys": ["L"], "command": "open_auto_completion", "args": {"keystroke": "L" }, "context": [ { "key": "auto_complete_visible", "operator": "equal", "operand": false } ] }, { "keys": ["M"], "command": "open_auto_completion", "args": {"keystroke": "M" }, "context": [ { "key": "auto_complete_visible", "operator": "equal", "operand": false } ] }, { "keys": ["N"], "command": "open_auto_completion", "args": {"keystroke": "N" }, "context": [ { "key": "auto_complete_visible", "operator": "equal", "operand": false } ] }, { "keys": ["O"], "command": "open_auto_completion", "args": {"keystroke": "O" }, "context": [ { "key": "auto_complete_visible", "operator": "equal", "operand": false } ] }, { "keys": ["P"], "command": "open_auto_completion", "args": {"keystroke": "P" }, "context": [ { "key": "auto_complete_visible", "operator": "equal", "operand": false } ] }, { "keys": ["Q"], "command": "open_auto_completion", "args": {"keystroke": "Q" }, "context": [ { "key": "auto_complete_visible", "operator": "equal", "operand": false } ] }, { "keys": ["R"], "command": "open_auto_completion", "args": {"keystroke": "R" }, "context": [ { "key": "auto_complete_visible", "operator": "equal", "operand": false } ] }, { "keys": ["S"], "command": "open_auto_completion", "args": {"keystroke": "S" }, "context": [ { "key": "auto_complete_visible", "operator": "equal", "operand": false } ] }, { "keys": ["T"], "command": "open_auto_completion", "args": {"keystroke": "T" }, "context": [ { "key": "auto_complete_visible", "operator": "equal", "operand": false } ] }, { "keys": ["U"], "command": "open_auto_completion", "args": {"keystroke": "U" }, "context": [ { "key": "auto_complete_visible", "operator": "equal", "operand": false } ] }, { "keys": ["V"], "command": "open_auto_completion", "args": {"keystroke": "V" }, "context": [ { "key": "auto_complete_visible", "operator": "equal", "operand": false } ] }, { "keys": ["W"], "command": "open_auto_completion", "args": {"keystroke": "W" }, "context": [ { "key": "auto_complete_visible", "operator": "equal", "operand": false } ] }, { "keys": ["X"], "command": "open_auto_completion", "args": {"keystroke": "X" }, "context": [ { "key": "auto_complete_visible", "operator": "equal", "operand": false } ] }, { "keys": ["Y"], "command": "open_auto_completion", "args": {"keystroke": "Y" }, "context": [ { "key": "auto_complete_visible", "operator": "equal", "operand": false } ] }, { "keys": ["Z"], "command": "open_auto_completion", "args": {"keystroke": "Z" }, "context": [ { "key": "auto_complete_visible", "operator": "equal", "operand": false } ] }, ] ```

braver commented 7 years ago

@evandrocoan Can you list all the packages you installed?

evandrocoan commented 7 years ago

I use several of my forks, so they are not same as you can install from package control, for example BufferScroll is had several changes. You can see, and install them all on my toolset: https://github.com/evandrocoan/SublimeTextStudio

Anyway I run a new command I added to package control to list the packages. This is the output:

``` Packages list within 155 entries: 1: Sublime file-specific icons for improved visual grepping [v3.2.1; github.com/ihodev/a-file-icon] 2: No description provided [git repository] 3: Repository for the AddFolderToProject Sublime Plugin [v1.1.1; github.com/DavidGerva/AddFolderToProject-SublimePlugin] 4: No description provided [git repository] 5: File creation plugin for Sublime Text 2 and Sublime Text 3. [v1.7.0; github.com/skuroda/Sublime-AdvancedNewFile] 6: Easy alignment of multiple selections and multi-line selections [v2.1.0; wbond.net/sublime_packages/alignment] 7: An alignment plugin using regular expression [v2.1.6; github.com/randy3k/AlignTab] 8: No description provided [git repository] 9: No description provided [git repository] 10: No description provided [git repository] 11: Anaconda turns your Sublime Text 3 in a full featured Python development IDE including autocompletion, code linting, IDE features, autopep8 formating, McCabe complexity checker Vagrant and Docker support for Sublime Text 3 using Jedi, PyFlakes, pep8, MyPy, PyLint, pep257 and McCabe that will never freeze your Sublime Text 3 [v2.1.18; damnwidget.github.io/anaconda/] 12: No description provided [git repository] 13: Syntax detector for Sublime Text http://facelessuser.github.io/ApplySyntax/ [v2.4.1; github.com/facelessuser/ApplySyntax] 14: A plugin for Sublime Text to automatically reload files on an interval [v1.0.1; github.com/Waterflames/AutoRefresh] 15: No description provided [git repository] 16: No description provided [git repository] 17: Syntax highlighting and checking, commands, shortcuts, snippets, watched compilation and more. [v2016.09.11.08.53.12; aponxi.github.com/sublime-better-coffeescript/] 18: Adds a couple of missing features to SublimeText 3 Find Results buffer [v1.0.0; github.com/aziz/BetterFindBuffer] 19: Bracket and tag highlighter for Sublime Text http://facelessuser.github.io/BracketHighlighter/ [v2.24.2; github.com/facelessuser/BracketHighlighter] 20: No description provided [git repository] 21: C++ Completions for Sublime text. [v1.0.0; github.com/tushortz/CPP-Completions] 22: C++11 Sublime Text Snippets [v1.2.5; github.com/Rapptz/cpp-sublime-snippet] 23: C, C++ and C++11 combined and improved syntax highlighting support for Sublime Text. [v0.2.8; github.com/kodLite/cppStartingKit] 24: Case conversion plugin (pascal, camel, snake) for sublime text 2 [v2017.02.15.21.45.13; github.com/jdc0589/CaseConversion] 25: Sublime text plugin to run a chain of commands [v2014.01.26.09.05.33; github.com/jisaacks/ChainOfCommand] 26: Converts single to double or double to single quotes. Attempts to preserve correct escaping, though this could be improved I'm sure. [v2.3.1; github.com/colinta/SublimeChangeQuotes] 27: A Sublime Text package for working with channels and repositories [v1.1.0; packagecontrol.io/packages/ChannelRepositoryTools] 28: No description provided [git repository] 29: Underlines URLs in Sublime Text, and lets you open them with a keystroke. [v1.3.0; github.com/leonid-shevtsov/ClickableUrls_SublimeText] 30: No description provided [git repository] 31: ColorHighlighter - is a plugin for the Sublime text 2 and 3, which underlays selected hexadecimal colorcodes (like "#FFFFFF", "rgb(255,255,255)", "white", etc.) with their real color. Also, plugin adds color picker to easily modify colors. [v2017.05.31.17.18.02; sublime.wbond.net/packages/Color%20Highlighter] 32: Sublime plugin that provides helpful color tooltips http://facelessuser.github.io/ColorHelper/ [v2.5.0; github.com/facelessuser/ColorHelper] 33: "Real-time" color scheme editor plugin for Sublime Text 2/3. [v1.0.0; github.com/bobef/ColorSchemeEditor] 34: Alternate behavior for Sublime keyboard column selection. [v2017.04.06.23.20.26; github.com/ehuss/Sublime-Column-Select] 35: Side-by-side file comparison & difference tool for ST2/3 [v1.13.0; github.com/DougTy/sublime-compare-side-by-side] 36: A Sublime Text 2 & 3 plugin for editing and saving files encoded in GBK, BIG5, EUC-KR, EUC-JP, Shift_JIS, etc. [v1.2.11; github.com/seanliang/ConvertToUTF8] 37: Copy filepath of current file with number of selected line(s) [v1.1.0; github.com/theskyliner/CopyFilepathWithLineNumbers] 38: Copy selected lines with line number and file name. [v1.2.1; github.com/crash5/CopyWithLineNumbersReloaded] 39: No description provided [git repository] 40: Adds a "File: Delete" command which deletes the current file and closes the current buffer. [v0.2.0; github.com/yaworsw/Sublime-DeleteCurrentFile] 41: This adds dictionary entries to the completions inside comments. For lazy typers! [v2015.01.01.20.28.30; github.com/Zinggi/DictionaryAutoComplete] 42: SublimeText "Distraction free mode" but not full-screen! A windowed UI is more manageable and accessible yet it can be simple and sublime! [v0.6.6; github.com/aziz/DistractionFreeWindow] 43: Simplifies writing DocBlock comments in Javascript, PHP, CoffeeScript, Actionscript, C & C++ [v2.14.1; github.com/spadgos/sublime-jsdocs] 44: User settings to bring ShellScript (Bash) syntax highlighting to dotfiles [v1.2.17; github.com/mattbanks/dotfiles-syntax-highlighting-st2] 45: If you have an equal number of empty selections (cursors) and selections, this command will place each selection at the corresponding cursor location. [v2.1.0; github.com/colinta/SublimeDuplicateSelections] 46: Helper commands for working with sublime package assets/preferences. ST3 only. [v2013.02.26.12.14.25; github.com/sublimator/EditPreferences] 47: Emmet for Sublime Text [v2017.03.23.21.16.14; emmet.io] 48: Sublime Text - Export code to HTML for copying/printing/saving. http://facelessuser.github.com/ExportHtml [v2.4.1; github.com/facelessuser/ExportHtml] 49: View all open files (sorted/unsorted) for switching between them. [v2.3.1; github.com/rajeshvaya/Sublime-Extended-Tab-Switcher] 50: Extract selected text to another file [v1.0.0; github.com/dreki/sublime-extract-to-file] 51: Provides access to the history of recently accessed files - project-wise or globally [v1.8.0; github.com/FichteFoll/FileHistory] 52: Rename files from the ST3 command palette [v1.0.7; github.com/brianlow/FileRename] 53: Shows diffs between the current file, or selection(s) in the current file, and clipboard, another file, or unsaved changes. With contributions from Sebastian Pape (spape) and Jiri Urban (jiriurban) [v2.8.0; github.com/colinta/SublimeFileDiffs] 54: ⚡️ A Sublime Text 3 package to help with file (duplicate, move, create...) ⚡️ [v2017.04.19.01.22.12; math2001.github.io/FileManager] 55: Find code quickly in Sublime Text. [v0.4.2; github.com/twolfson/FindPlusPlus] 56: Plugin for Sublime Text to help identify conflicting key mappings. [v2016.08.21.05.07.00; github.com/skuroda/FindKeyConflicts] 57: No description provided [git repository] 58: No description provided [git repository] 59: No description provided [git repository] 60: No description provided [git repository] 61: Sublime Text Plugin that allows for file navigation via the quick panel taking advantage of Sublime's fuzzy searching. [v1.3.1; github.com/facelessuser/FuzzyFileNav] 62: No description provided [git repository] 63: Generic highlighting of the configuration files for Sublime Text 2 and Sublime Text 3 [v0.0.6; github.com/skozlovf/Sublime-GenericConfig] 64: Sublime Text plugin for creating new Gists from selected text [v2015.11.15.20.01.15; github.com/condemil/Gist] 65: Plugin for some git integration into sublime text [v1.0.8; github.com/kemayo/sublime-text-git] 66: A Sublime Text 2/3 plugin to see git diff in gutter [v1.7.2; github.com/jisaacks/GitGutter] 67: GitHub flavored Markdown with plain'ol HTML knowledge! Boom! [v2.1.0; praveenpuglia.github.io/github_markdown_snippets/] 68: Glue is a plugin that joins your shell to Sublime Text in quasi-perfect harmony. [v0.9.5; gluedocs.readthedocs.org/] 69: Uses Google Search spelling magic to fix words or phrases for Sublime Text. [v2015.10.19.16.12.01; github.com/noahcoad/google-spell-check] 70: No description provided [git repository] 71: :flashlight: A plugin for Sublime Text 3 that highlights the lines that caused errors in the build [v3.0.1; sublime.wbond.net/packages/Highlight%20Build%20Errors] 72: A Sublime Text 2 & 3 plugin for highlighting mutiple words in different colors [v2015.12.21.04.05.23; github.com/seanliang/HighlightWords] 73: Adds hotkeys to scroll horizontally using the keyboard. [v1.1.2; github.com/TheOnlyRew/sublime-horizontal-scroll] 74: This small plugin brings to Sublime Text the "hungry"/"smart" backspace feature from IntelliJ. The hungry backspace retains the scope (indentation) when the backspace key is pressed on an empty line. [v1.1.6; github.com/xdrop/Hungry-Backspace] 75: Add a number to each selection in Sublime Text, incremented once per selection [v2017.06.23.03.24.37; github.com/yulanggong/IncrementSelection] 76: A Sublime Text 2 Plugin that can generate a sequence of numbers using search and replace. [v2016.09.01.01.52.34; github.com/eBookArchitects/Incrementor] 77: No description provided [git repository] 78: Sublime Tex plugin for adding commands to update indent size [v0.1.1; github.com/socsieng/sublime-indent-size] 79: sublime 2 missing feature invert selection [v2013.09.05.03.37.05; github.com/vontio/sublime-invert-selection] 80: Java Development Plugin for Sublime Text 3 [v1.0.2; javatar.readthedocs.org/] 81: awesome Python autocompletion with SublimeText [v0.9.0; github.com/srusskih/SublimeJEDI] 82: SublimeText 2+3 plugin providing a customisable word and character counter for LaTeX and plaintext files [v2017.06.30.10.07.42; packagecontrol.io/packages/LaTeX%20Word%20Count] 83: LaTeX cwl files for Sublime Text 2/3 with LaTeXing [v2015.03.10.20.32.35; www.latexing.com] 84: No description provided [git repository] 85: LESS syntax highlighting for Sublime Text. [v2014.08.31.22.28.34; sublime.wbond.net/packages/LESS] 86: batch change files endings [v2016.07.24.10.20.10; github.com/vontio/sublime-line-endings-unify] 87: A Sublime Text 2/3 plugin for maintaining local history of files. [backup | open | compare | incremental diff] [v2016.09.12.07.22.25; vishr.com/local-history] 88: markdown preview and build plugin for sublime text 2/3 [v1.4.3; github.com/revolunet/sublimetext-markdown-preview] 89: No description provided [git repository] 90: No description provided [git repository] 91: Offers Completion Suggestions for Matlab on Sublime text. [v1.0.1; github.com/tushortz/Matlab-Completions] 92: Sublime package that adds all Matlab filenames in your project to auto complete [v1.0.0; github.com/joepmoritz/MatlabFilenameAutoComplete] 93: Sublime Text plugin to quickly maximize a pane in a multi pane layout without resetting the layout. [v2017.03.05.02.52.08; github.com/jisaacks/MaxPane] 94: Select text and drag it around, or setup a text tunnel to move code from one location to another. [v2.0.3; github.com/colinta/SublimeMoveText] 95: A Sublime Text Plugin which enhances editing of multiple selections. [v1.8.2; github.com/philippotto/Sublime-MultiEditUtils] 96: No description provided [unknown version] 97: Many snippets for quick creation of sql commands [v1.6.0; github.com/ancor-dev/sublime-sql-snippets] 98: Sublime Text plugin to open files with external apps and prevent preview of binary files [v1.3.0; github.com/bordaigorl/sublime-non-text-files] 99: No description provided [git repository] 100: Manipulate numbers like a King -- Unparalleled number/CSV/spreadsheet plugin in Sublime Text [v1.2.0; github.com/hktonylee/SublimeNumberKing] 101: No description provided [git repository] 102: No description provided [git repository] 103: Split the window however you like! Create new panes, delete panes, move and clone views from pane to pane. [v2017.05.19.22.20.10; github.com/SublimeText/Origami] 104: No description provided [git repository] 105: Easily Manage Your Sublime Text Package Overrides [v1.1.1; github.com/OdatNurd/OverrideAudit] 106: No description provided [git repository] 107: A full-featured package manager [v3.2.1; packagecontrol.io] 108: No description provided [git repository] 109: Sublime Text plugin to view package resources. [v1.0.0; github.com/skuroda/PackageResourceViewer] 110: Converts windows path to unix friendly and unix path to windows friendly path. [v1.1.0; github.com/hbhakhra/Path-Translator] 111: Sublime Syntax for Adobe PostScript 3 [v1.0.0; github.com/Briles/sublime-syntax-postscript] 112: No description provided [git repository] 113: No description provided [git repository] 114: Allows syntax settings to be specified per project in Sublime Text [v0.0.7; github.com/reywood/sublime-project-specific-syntax] 115: Completion features for Qt with Sublime text [v1.0.2; github.com/tushortz/Qt-Completions-for-Cpp] 116: Plugin for sublime text to generate random, ints, floats, strings and words [v2016.08.20.12.39.13; github.com/kimpettersen/random-sublime-text-plugin] 117: Sublime Text plugin that shows and opens recent activated files. [v2016.07.12.01.35.23; github.com/jugyo/SublimeRecentActiveFiles] 118: Quickly re-indent file to two or four spaces tabsize. [v1.0.0; github.com/kamilkp/Sublime-Text-ReIndent] 119: No description provided [git repository] 120: Adds a command which displays the current scope in the status bar at all times [v0.2.2; github.com/yaworsw/Sublime-ScopeAlways] 121: A plugin for Sublime Text that gets the scope under the cursor. [v2.7.0; github.com/facelessuser/ScopeHunter] 122: