Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Several crashes while typing text #1832

Closed
evandrocoan opened this issue Jul 23, 2017 · 6 comments
Closed

Several crashes while typing text #1832

evandrocoan opened this issue Jul 23, 2017 · 6 comments

Comments

@evandrocoan
Copy link

evandrocoan commented Jul 23, 2017

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:

	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
Copy link
Author

evandrocoan commented Jul 23, 2017

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. Undo more history steps when inserting only one character each time #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:

[
    // 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
Copy link

braver commented Jul 24, 2017

@evandrocoan Can you list all the packages you installed?

@evandrocoan
Copy link
Author

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: <A File Icon>
     Sublime file-specific icons for improved visual grepping
     [v3.2.1; github.com/ihodev/a-file-icon]

  2: <Active View Jump Back>
     No description provided
     [git repository]

  3: <Add Folder To Project>
     Repository for the AddFolderToProject Sublime Plugin
     [v1.1.1; github.com/DavidGerva/AddFolderToProject-SublimePlugin]

  4: <Advanced CSV>
     No description provided
     [git repository]

  5: <AdvancedNewFile>
     File creation plugin for Sublime Text 2 and Sublime Text 3.
     [v1.7.0; github.com/skuroda/Sublime-AdvancedNewFile]

  6: <Alignment>
     Easy alignment of multiple selections and multi-line selections
     [v2.1.0; wbond.net/sublime_packages/alignment]

  7: <AlignTab>
     An alignment plugin using regular expression
     [v2.1.6; github.com/randy3k/AlignTab]

  8: <All Autocomplete>
     No description provided
     [git repository]

  9: <amxmodx>
     No description provided
     [git repository]

 10: <Amxx Pawn>
     No description provided
     [git repository]

 11: <Anaconda>
     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: <ANSIescape>
     No description provided
     [git repository]

 13: <ApplySyntax>
     Syntax detector for Sublime Text http://facelessuser.github.io/ApplySyntax/
     [v2.4.1; github.com/facelessuser/ApplySyntax]

 14: <Auto Refresh>
     A plugin for Sublime Text to automatically reload files on an interval
     [v1.0.1; github.com/Waterflames/AutoRefresh]

 15: <AutoFileName>
     No description provided
     [git repository]

 16: <BBCode>
     No description provided
     [git repository]

 17: <Better CoffeeScript>
     Syntax highlighting and checking, commands, shortcuts, snippets, watched
     compilation and more.
     [v2016.09.11.08.53.12; aponxi.github.com/sublime-better-coffeescript/]

 18: <BetterFindBuffer>
     Adds a couple of missing features to SublimeText 3 Find Results buffer
     [v1.0.0; github.com/aziz/BetterFindBuffer]

 19: <BracketHighlighter>
     Bracket and tag highlighter for Sublime Text
     http://facelessuser.github.io/BracketHighlighter/
     [v2.24.2; github.com/facelessuser/BracketHighlighter]

 20: <BufferScroll>
     No description provided
     [git repository]

 21: <C++ Completions>
     C++ Completions for Sublime text.
     [v1.0.0; github.com/tushortz/CPP-Completions]

 22: <C++ Snippets>
     C++11 Sublime Text Snippets
     [v1.2.5; github.com/Rapptz/cpp-sublime-snippet]

 23: <C++ Starting Kit>
     C, C++ and C++11 combined and improved syntax highlighting support for
     Sublime Text.
     [v0.2.8; github.com/kodLite/cppStartingKit]

 24: <Case Conversion>
     Case conversion plugin (pascal, camel, snake) for sublime text 2
     [v2017.02.15.21.45.13; github.com/jdc0589/CaseConversion]

 25: <Chain of Command>
     Sublime text plugin to run a chain of commands
     [v2014.01.26.09.05.33; github.com/jisaacks/ChainOfCommand]

 26: <ChangeQuotes>
     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: <ChannelRepositoryTools>
     A Sublime Text package for working with channels and repositories
     [v1.1.0; packagecontrol.io/packages/ChannelRepositoryTools]

 28: <Clear Cursors Carets>
     No description provided
     [git repository]

 29: <Clickable URLs>
     Underlines URLs in Sublime Text, and lets you open them with a keystroke.
     [v1.3.0; github.com/leonid-shevtsov/ClickableUrls_SublimeText]

 30: <Clipboard Scope Copy>
     No description provided
     [git repository]

 31: <Color Highlighter>
     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: <ColorHelper>
     Sublime plugin that provides helpful color tooltips
     http://facelessuser.github.io/ColorHelper/
     [v2.5.0; github.com/facelessuser/ColorHelper]

 33: <ColorSchemeEditor>
     "Real-time" color scheme editor plugin for Sublime Text 2/3.
     [v1.0.0; github.com/bobef/ColorSchemeEditor]

 34: <Column Select>
     Alternate behavior for Sublime keyboard column selection.
     [v2017.04.06.23.20.26; github.com/ehuss/Sublime-Column-Select]

 35: <Compare Side-By-Side>
     Side-by-side file comparison & difference tool for ST2/3
     [v1.13.0; github.com/DougTy/sublime-compare-side-by-side]

 36: <ConvertToUTF8>
     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 With Line Numbers>
     Copy filepath of current file with number of selected line(s)
     [v1.1.0; github.com/theskyliner/CopyFilepathWithLineNumbers]

 38: <CopyWithLineNumbersReloaded>
     Copy selected lines with line number and file name.
     [v1.2.1; github.com/crash5/CopyWithLineNumbersReloaded]

 39: <Default Syntax>
     No description provided
     [git repository]

 40: <Delete Current File>
     Adds a "File: Delete" command which deletes the current file and closes the
     current buffer.
     [v0.2.0; github.com/yaworsw/Sublime-DeleteCurrentFile]

 41: <DictionaryAutoComplete>
     This adds dictionary entries to the completions inside comments. For lazy
     typers!
     [v2015.01.01.20.28.30; github.com/Zinggi/DictionaryAutoComplete]

 42: <DistractionFreeWindow>
     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: <DocBlockr>
     Simplifies writing DocBlock comments in Javascript, PHP, CoffeeScript,
     Actionscript, C & C++
     [v2.14.1; github.com/spadgos/sublime-jsdocs]

 44: <Dotfiles Syntax Highlighting>
     User settings to bring ShellScript (Bash) syntax highlighting to dotfiles
     [v1.2.17; github.com/mattbanks/dotfiles-syntax-highlighting-st2]

 45: <DuplicateSelections>
     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: <Edit Preferences>
     Helper commands for working with sublime package assets/preferences. ST3
     only.
     [v2013.02.26.12.14.25; github.com/sublimator/EditPreferences]

 47: <Emmet>
     Emmet for Sublime Text
     [v2017.03.23.21.16.14; emmet.io]

 48: <ExportHtml>
     Sublime Text - Export code to HTML for copying/printing/saving.
     http://facelessuser.github.com/ExportHtml
     [v2.4.1; github.com/facelessuser/ExportHtml]

 49: <ExtendedTabSwitcher>
     View all open files (sorted/unsorted) for switching between them.
     [v2.3.1; github.com/rajeshvaya/Sublime-Extended-Tab-Switcher]

 50: <Extract Text to File>
     Extract selected text to another file
     [v1.0.0; github.com/dreki/sublime-extract-to-file]

 51: <File History>
     Provides access to the history of recently accessed files - project-wise or
     globally
     [v1.8.0; github.com/FichteFoll/FileHistory]

 52: <File Rename>
     Rename files from the ST3 command palette
     [v1.0.7; github.com/brianlow/FileRename]

 53: <FileDiffs>
     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: <FileManager>
     ⚡️ A Sublime Text 3 package to help with file (duplicate, move, create...)
     ⚡️
     [v2017.04.19.01.22.12; math2001.github.io/FileManager]

 55: <Find++>
     Find code quickly in Sublime Text.
     [v0.4.2; github.com/twolfson/FindPlusPlus]

 56: <FindKeyConflicts>
     Plugin for Sublime Text to help identify conflicting key mappings.
     [v2016.08.21.05.07.00; github.com/skuroda/FindKeyConflicts]

 57: <Fix Project Switch Restart Bug>
     No description provided
     [git repository]

 58: <Fix Selection After Indent>
     No description provided
     [git repository]

 59: <Fixed Selections Clear>
     No description provided
     [git repository]

 60: <Force Rewrite Sublime Settings>
     No description provided
     [git repository]

 61: <FuzzyFileNav>
     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: <FuzzyFilePath>
     No description provided
     [git repository]

 63: <Generic Config>
     Generic highlighting of the configuration files for Sublime Text 2 and
     Sublime Text 3
     [v0.0.6; github.com/skozlovf/Sublime-GenericConfig]

 64: <Gist>
     Sublime Text plugin for creating new Gists from selected text
     [v2015.11.15.20.01.15; github.com/condemil/Gist]

 65: <Git>
     Plugin for some git integration into sublime text
     [v1.0.8; github.com/kemayo/sublime-text-git]

 66: <GitGutter>
     A Sublime Text 2/3 plugin to see git diff in gutter
     [v1.7.2; github.com/jisaacks/GitGutter]

 67: <GitHub Markdown Snippets>
     GitHub flavored Markdown with plain'ol HTML knowledge! Boom!
     [v2.1.0; praveenpuglia.github.io/github_markdown_snippets/]

 68: <Glue>
     Glue is a plugin that joins your shell to Sublime Text in quasi-perfect
     harmony.
     [v0.9.5; gluedocs.readthedocs.org/]

 69: <Google Spell Check>
     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: <GotoLastEditEnhanced>
     No description provided
     [git repository]

 71: <Highlight Build Errors>
     :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: <HighlightWords>
     A Sublime Text 2 & 3 plugin for highlighting mutiple words in different
     colors
     [v2015.12.21.04.05.23; github.com/seanliang/HighlightWords]

 73: <Horizontal Scroll>
     Adds hotkeys to scroll horizontally using the keyboard.
     [v1.1.2; github.com/TheOnlyRew/sublime-horizontal-scroll]

 74: <Hungry Backspace>
     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: <Increment Selection>
     Add a number to each selection in Sublime Text, incremented once per
     selection
     [v2017.06.23.03.24.37; github.com/yulanggong/IncrementSelection]

 76: <Incrementor>
     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: <Indent and braces>
     No description provided
     [git repository]

 78: <Indent Size>
     Sublime Tex plugin for adding commands to update indent size
     [v0.1.1; github.com/socsieng/sublime-indent-size]

 79: <Invert Selection>
     sublime 2 missing feature invert selection
     [v2013.09.05.03.37.05; github.com/vontio/sublime-invert-selection]

 80: <Javatar>
     Java Development Plugin for Sublime Text 3
     [v1.0.2; javatar.readthedocs.org/]

 81: <Jedi - Python autocompletion>
     awesome Python autocompletion with SublimeText
     [v0.9.0; github.com/srusskih/SublimeJEDI]

 82: <LaTeX Word Count>
     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>
     LaTeX cwl files for Sublime Text 2/3 with LaTeXing
     [v2015.03.10.20.32.35; www.latexing.com]

 84: <LaTeXTools>
     No description provided
     [git repository]

 85: <LESS>
     LESS syntax highlighting for Sublime Text.
     [v2014.08.31.22.28.34; sublime.wbond.net/packages/LESS]

 86: <Line Endings Unify>
     batch change files endings
     [v2016.07.24.10.20.10; github.com/vontio/sublime-line-endings-unify]

 87: <Local History>
     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>
     markdown preview and build plugin for sublime text 2/3
     [v1.4.3; github.com/revolunet/sublimetext-markdown-preview]

 89: <Markdown to BB Code Converter>
     No description provided
     [git repository]

 90: <MarkdownLight>
     No description provided
     [git repository]

 91: <Matlab Completions>
     Offers Completion Suggestions for Matlab on Sublime text.
     [v1.0.1; github.com/tushortz/Matlab-Completions]

 92: <MatlabFilenameAutoComplete>
     Sublime package that adds all Matlab filenames in your project to auto
     complete
     [v1.0.0; github.com/joepmoritz/MatlabFilenameAutoComplete]

 93: <MaxPane>
     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: <MoveText>
     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: <MultiEditUtils>
     A Sublime Text Plugin which enhances editing of multiple selections.
     [v1.8.2; github.com/philippotto/Sublime-MultiEditUtils]

 96: <MultiLingual Dictionary>
     No description provided
     [unknown version]

 97: <MySQL Snippets>
     Many snippets for quick creation of sql commands
     [v1.6.0; github.com/ancor-dev/sublime-sql-snippets]

 98: <Non Text Files>
     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: <Notepad++ Color Scheme>
     No description provided
     [git repository]

100: <Number King>
     Manipulate numbers like a King -- Unparalleled number/CSV/spreadsheet
     plugin in Sublime Text
     [v1.2.0; github.com/hktonylee/SublimeNumberKing]

101: <Octave>
     No description provided
     [git repository]

102: <Open Auto Completion>
     No description provided
     [git repository]

103: <Origami>
     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: <Override Unpacked Packages>
     No description provided
     [git repository]

105: <OverrideAudit>
     Easily Manage Your Sublime Text Package Overrides
     [v1.1.1; github.com/OdatNurd/OverrideAudit]

106: <Overwrite Commit Completion>
     No description provided
     [git repository]

107: <Package Control>
     A full-featured package manager
     [v3.2.1; packagecontrol.io]

108: <PackageDev>
     No description provided
     [git repository]

109: <PackageResourceViewer>
     Sublime Text plugin to view package resources.
     [v1.0.0; github.com/skuroda/PackageResourceViewer]

110: <Path Translator>
     Converts windows path to unix friendly and unix path to windows friendly
     path.
     [v1.1.0; github.com/hbhakhra/Path-Translator]

111: <PostScript>
     Sublime Syntax for Adobe PostScript 3
     [v1.0.0; github.com/Briles/sublime-syntax-postscript]

112: <PowerCursors>
     No description provided
     [git repository]

113: <Preferences Editor>
     No description provided
     [git repository]

114: <Project Specific Syntax Settings>
     Allows syntax settings to be specified per project in Sublime Text
     [v0.0.7; github.com/reywood/sublime-project-specific-syntax]

115: <Qt Completions for C++>
     Completion features for Qt with Sublime text
     [v1.0.2; github.com/tushortz/Qt-Completions-for-Cpp]

116: <Random Everything>
     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: <RecentActiveFiles>
     Sublime Text plugin that shows and opens recent activated files.
     [v2016.07.12.01.35.23; github.com/jugyo/SublimeRecentActiveFiles]

118: <ReIndent>
     Quickly re-indent file to two or four spaces tabsize.
     [v1.0.0; github.com/kamilkp/Sublime-Text-ReIndent]

119: <Rich Plain Text>
     No description provided
     [git repository]

120: <ScopeAlways>
     Adds a command which displays the current scope in the status bar at all
     times
     [v0.2.2; github.com/yaworsw/Sublime-ScopeAlways]

121: <ScopeHunter>
     A plugin for Sublime Text that gets the scope under the cursor.
     [v2.7.0; github.com/facelessuser/ScopeHunter]

122: <Select All Spelling Errors>
     No description provided
     [git repository]

123: <Shell Script>
     No description provided
     [git repository]

124: <Side-by-Side Settings>
     No description provided
     [git repository]

125: <SideBarEnhancements>
     No description provided
     [git repository]

126: <SQL Keyword Uppercase>
     No description provided
     [git repository]

127: <SQLExec>
     A Plugin for running SQL commands in Sublime Text
     [v2015.04.01.09.06.10; lubriciousdevelopers.github.io/projects/sublime-sql-exec]

128: <SQLTools>
     SQLTools for Sublime Text 3
     [v0.9.3; mtxr.github.io/SQLTools]

129: <StickySearch>
     Sublime Text 3 plugin - persistent highlight of selected text
     [v1.0.0; github.com/vim-zz/StickySearch]

130: <Sublime Text Studio>
     No description provided
     [git repository]

131: <Sublime Tutor>
     An interactive in-editor keyboard shortcuts tutorial for Sublime Text 3
     [v0.1.6; sublimetutor.com]

132: <sublime-text-2-buildview>
     A Sublime Text 2/3 plugin to show build output in a view.
     [v2015.03.09.12.05.10; github.com/rctay/sublime-text-2-buildview]

133: <SublimeCodeIntel>
     No description provided
     [git repository]

134: <SublimeREPL>
     No description provided
     [git repository]

135: <Swift>
     A Sublime Text package for the Swift programming language
     [v0.0.9; github.com/quiqueg/Swift-Sublime-Package]

136: <Sync View Scroll>
     sublimetext3 sync scroll among views
     [v0.3.0; github.com/zzjin/syncViewScroll]

137: <SyncedSideBar>
     No description provided
     [git repository]

138: <Syntax Highlighting for Sass>
     Perfect syntax highlighting for both SCSS and Sass.
     [v2014.08.12.11.09.22; github.com/P233/Syntax-highlighting-for-Sass]

139: <SyntaxManager>
     Applying syntax to given extensions and apply settings to given syntaxes
     [v1.1.5; github.com/randy3k/SyntaxManager]

140: <TabsExtra>
     Sublime Plugin with sticky tabs, more tab closing options, and additional
     menu items. http://facelessuser.github.io/TabsExtra/
     [v1.4.0; github.com/facelessuser/TabsExtra]

141: <Terminal>
     Launch terminals from the current file or the root project folder
     [v1.17.0; packagecontrol.io/packages/Terminal]

142: <Text Pastry>
     Extend the power of multiple selections in Sublime Text 2/3. Modify
     selections, insert numeric sequences, incremental numbers, generate uuids,
     date ranges, insert continuously from a word list and more.
     [v1.5.1; github.com/duydao/Text-Pastry]

143: <Toggle>
     No description provided
     [unknown version]

144: <TOML>
     Sublime Text 2/3 syntax highlighting for .toml/.tml format
     [v1.0.6; github.com/Jayflux/sublime_toml_highlighting]

145: <Toolbar>
     No description provided
     [git repository]

146: <Trimmer>
     A Sublime Text plug-in for cleaning up whitespace.
     [v1.3.0; github.com/jonlabelle/Trimmer]

147: <Uncrustify>
     No description provided
     [git repository]

148: <UnitTesting>
     Testing Sublime Text Packages
     [v0.10.5; github.com/randy3k/UnitTesting]

149: <VBScript>
     VBScript package for Sublime Text
     [v2016.06.13.15.16.42; github.com/SublimeText/VBScript]

150: <View Settings Freely>
     No description provided
     [git repository]

151: <Whitespace>
     Remove Trailing Whitespace for Sublime Text
     [v0.1.4; github.com/randy3k/Whitespace]

152: <WordHighlight>
     Highlight all copies of the currently selected word.
     [v2017.04.20.14.40.06; github.com/SublimeText/WordHighlight]

153: <Wrap Plus>
     Enhanced "wrap lines" command for Sublime Text 2 or 3.
     [v2017.04.07.00.04.57; github.com/ehuss/Sublime-Wrap-Plus]

154: <x86 and x86_64 Assembly>
     A bundle for TextMate/Sublime Text providing syntax highlighting for x86
     assembly code.
     [v2.2.11; github.com/13xforever/x86-assembly-textmate-bundle]

155: <zzz A File Icon zzz>
     No description provided
     [unknown version]



Not all the 155 are enabled, these packages are disabled, until I need them and/or have time to fix some which are not working right as are breaking some other package functionality:

	"ignored_packages":
	[
		"All Autocomplete",
		"Anaconda",
		"ApplySyntax",
		"Boxy Theme",
		"BracketHighlighter",
		"C++ Completions",
		"C++ Snippets",
		"C++ Starting Kit",
		"ColorHelper",
		"DictionaryAutoComplete",
		"FileManager",
		"Find++",
		"Gist",
		"Git",
		"GitGutter",
		"Javatar",
		"Local History",
		"Matlab Completions",
		"MatlabFilenameAutoComplete",
		"MySQL Snippets",
		"Project Specific Syntax Settings",
		"Qt Completions for C++",
		"ScopeAlways",
		"Select All Spelling Errors",
		"SQL Keyword Uppercase",
		"SQLExec",
		"SQLTools",
		"Sublime Tutor",
		"sublime-text-2-buildview",
		"SublimeCodeIntel",
		"SyncedSideBar",
		"SyntaxManager",
		"Vintage",
		"WordHighlight"
	],


@braver
Copy link

braver commented Jul 24, 2017

So, you have over 150 packages installed and something that calls autocomplete after every keystroke, and sublime crashes, and you’ve got nothing to start reproducing this? I’m not sure what your expectation is here. It’s not impossible to crash sublime with a plugin or combination of plugins, it’s the nature of the architecture, which provides benefits as much as it has downsides or risks.

What happens with a clean install and just your autocomplete-everywhere-all-the-time setup?

@evandrocoan
Copy link
Author

I am trying to reproduce this using the typer program:

  1. https://www.murgee.com/auto-typer/ Auto Typer to Automatically Type on Keyboard

image

I am adding the same text I was typing the other day and got 3 crashes:

text used

Link to a gist within it: ## Developing your Editor



## Developing your Editor

> @nikhil13 Open Source Sublime Text

This was already posted some years ago, you can read it at:

1. [#7424](https://forum.sublimetext.com/t/sublimes-future-and-open-source/7424) Sublime’s future and open source


> @nikhil13 I have been big fan of sublime text-3 and have been using it for 3-4 years

I just completed a year of Sublime Text. On this time I had been working a package toolset to let me use Sublime Text for everything I ever need. You can find it on: https://github.com/evandrocoan/SublimeTextStudio

My goal is to actively develop my text editor while I am working on it. For that I use git to fork all the packages I am using, and soon as I find I bug I can open the source code of the package see what is wrong and create a commit within a fix for it. Therefore I also started the same project for VSCode with similar naming and inspirations: https://github.com/evandrocoan/CodeTextStudio


> @nikhil13 But setting up packages, console, input etc can be very exhausting at times.

For example, yesterday I was working while I found a bug on the SideBarEnhancements package, I opened and source code for it, and fixed the problem and pushed a commit to my fork:

1. https://github.com/evandrocoan/SideBarEnhancements/commit/15a1a1785956ee636fd7f0ca09995f3b54f1a0af

What happened? The other day I implemented a feature on my SideBarEnhancements fork, but I did not tested it throughly. So I did not catch a behavior on the Sublime Text core. Hence yesterday after struggling some hours I find out it was a going on the Sublime Text core. Then I filled a new issue on it with the steps to reproduce it:

1. [Core$827](https://github.com/SublimeTextIssues/Core/issues/1827) When the input panel is closed by `enter` the `hide_panel` command is not called

It was labeled as `enhancement`. When I implemented the feature for the SideBarEnhancements I was expecting the command `hide_panel` to be called every time some panel is closed, either by the `enter` key (confirm) or by the `escape` key (cancelled), because the panel is being closed, how else should be panel goes out of screen? But for my surprise the `hide_panel` is currently only called when the panel is closed by the `escape` key, i.e., explicitly called.

Now looking into it, I am not sure it can ever be implemented without breaking backward compatibility. The command `hide_panel` is only issued when it is explicitly called, not when the panel is being "hidden". Now, we are welcome to software development. To be or not to be, that is question.



____

## The Sublime Text and VSCode Development

> @nikhil13 Also updates have been getting really slow lately

Please do not say that. You need to understand, there are only 2 developers working on the core. Not 10 or 100, but 2. The development is going great as it is. I just hope they can focus correctly their valuable and limited time to keep the editor good as it is for the future development.

What is software development? No ninja stuff, unless maybe for Javascript. What is the problem for Sublime Text? Its the C++, you cannot go out there just writing C++ on the speed light. You need to take serious time to understand what you are doing, what you are going to do it, and how are your software tests going to be. Though even Javascript cannot be lend in anyway you would like as pointed out by @braver comment:

> The stuff you really need, e.g. api additions, need so much knowledge, design and coordination that only the contracted developers can do anything about it. You don’t add ligatures or gutter columns on a rainy Sunday afternoon. Are you going to sit down and refactor some thing for a whole week, plus deal with the “+1” comments and update the blog, on a code base you’re not getting paid to maintain? The big pull requests in a project like Atom represent weeks of research, design, discussion and coding.

Why C++ is so hard to work with? For nothing, C++ itself is not entirely the  problem, the problem is the computer you are using and how it works. Why use C++? Because you have the control, explicit control over the computer. It means you can do anything you imagination come with. Which is very good for performance. As long as your are very smart, you can do very smart things and make Sublime Text the fastest thing alive.

However, with great power comes great responsibility. As long you can do very great things, you can do very nasty things and things tend to go very south and you end up with a C++ application slower, or as slower as a Javascript application. Or bad things as frequent/occasional crashes (seg faults). See the issue:

1. [Forum$23042](https://forum.sublimetext.com/t/st3-crashes-frequently-since-build-3124/23042) ST3 crashes frequently since Build 3124

Also doing simple things you could do in Python/Javascript could require much more man-work hours in C++. So, slowing even more the development progress. That is why new higher languages as Python and Javascript, and much more others are invented. To improve the programmer performance, allow them to create more stuff in less time with less bugs.

Also there the proposal of other languages as Rust, D, Ada, etc., trying to be as fast as C++, but less error prone, increasing the programmer code write performance. However I would say his is a field in development today. Now about this field there are several discussions out there. Some stick with one side, some choose stick with the other. In like 20 years from now we may look backward and see what each one of these sides accomplished and gone through. And draw out our conclusions.



____

## The VSCode Development

> I recently discovered VS code

Yo, there is a week I started working with VSCode. Because... It is open source, while Sublime Text is not. Why do I care? Well, because if there is a bug, and there are much bugs on the editor, I cannot fix. But what is my greatest concern are the segmentation faults bugs.

While I was writing this Text on Sublime Text, using my https://github.com/evandrocoan/MarkdownLight syntax fork:

1. Sublime Text crashed 3 times.
1. I fixed a bug on the MarkdownLight syntax, and created new ones.

The new bugs I created on the MarkdownLight is the not parsing of links on some parts of the text. I will have to look into that again, and see where I should start pushing then on the stack again.

The crash on Sublime Text is on that, I do not know why, why, why......... I did not reported before on the https://github.com/SublimeTextIssues/Core/issues because the dump file had `size 0` so there is nothing to do about it. This was not the first time is crashed like that. I have about 5 or 6 crashes like this, since the fix of the other crash I reported on https://github.com/SublimeTextIssues/Core/issues/1503 (Crash while hovering a File Name on the Tab Bar ).

On that time, the crash always created a dump file I could post, and post, and cry, cry, for the development team to look into it. Now the `dump` file is empty. Hence I have nothing to hold on. But these crashes are more well behaviored than the other, i.e., does not happen too much, often, etc.

When it crashed the second time, while writing this text, I created a new issue on the core within the description for it: https://github.com/SublimeTextIssues/Core/issues/1832 - You can even see the picture of the second love moment:

https://user-images.githubusercontent.com/5332158/28502050-5b7e911c-6fc0-11e7-861d-72c4d872093b.png

Problems like this is what makes the Sublime Text development slower and consume, exhaust, drive away the development time. This would be a issue from Sublime Text I would like to fix. Because I really hate crashes. I definitely would not be using my current Operating System if it was crashing (blue death screen). I need programs and I a system I can trust to never let me down losing my work or just vanishing out some time they fell like wanna do some crashing.



____

## The VSCode Problems

> @nikhil13 although it's UI is not even close to sublime text

I got these problems with their UI:

1\. Comparing Sublime Text gutter with VSCode gutter, we conclude the VSCode gutter is too big. Issue: https://github.com/Microsoft/vscode/issues/30795

<details>
<p>

**Sublime Text**
![image](https://user-images.githubusercontent.com/5332158/28245748-85e48dd6-69e3-11e7-86af-66bd172b158a.png)

**Notepad++**
![image](https://user-images.githubusercontent.com/5332158/28245825-685afdd4-69e5-11e7-8213-ce25215f9856.png)

**VSCode**
![image](https://user-images.githubusercontent.com/5332158/28245692-17eb3bcc-69e3-11e7-9341-c05cb50aaf06.png)

</p>
</details><br>



2\. The font `Consolas 15pt` with `"window.zoomLevel": 1.1,` is rendered narrowed, comparing to Sublime Text with the same font size. Issue: https://github.com/Microsoft/vscode/issues/30794

<details>
<p>

**VSCode 1.14.1**
![image](https://user-images.githubusercontent.com/5332158/28245579-bba795a6-69e0-11e7-87f1-f3728993a6c7.png)

**Sublime Text build 3141**
![image](https://user-images.githubusercontent.com/5332158/28245601-19c57162-69e1-11e7-9f66-1db2bec07d49.png)

**Notepad++ 7.4.1**
![image](https://user-images.githubusercontent.com/5332158/28245812-fab9e6aa-69e4-11e7-9e82-5fa7d4a525ef.png)

</p>
</details><br>



3\. Add border options to `selectionBackground` and `findMatchBackground`. They would be called like `selectionBorder` and `findMatchBorder`. Currently the selection has no border. https://github.com/Microsoft/vscode/issues/30793

<details>
<p>

![image](https://user-images.githubusercontent.com/5332158/28245458-8281e9aa-69dd-11e7-8952-ad69839e7cd4.png)


Would be awesome if it has borders like Sublime Text selections:

![image](https://user-images.githubusercontent.com/5332158/28245453-66aa5410-69dd-11e7-912b-868638cb7ffa.png)

</p>
</details><br>


4\. Help tool tip should be placed bellow the mouse cursor on the `settings.json` file, instead of above item. For me it is horribly confusing putting it above it, beyond blocking my vision, as I read what is above my mouse cursor, not bellow it. Perhaps a setting to configure this behavior. https://github.com/Microsoft/vscode/issues/30797

<details>
<p>

![image](https://user-images.githubusercontent.com/5332158/28245994-b03f8d9c-69e8-11e7-8208-bb279bd477a2.png)

* The mouse cursor is where the big red arrow is pointing.

</p>
</details><br>



5\. > @Gama11 I have the vshaxe extension cloned into .vscode/extensions/vshaxe, which is the usual workflow for working on extensions as far as I can tell. I didn't have the most recent commit pulled yet, so the version in my local package.json was behind the officially relased one. This leads to VSCode actually asking me to update the extension (which doesn't make a lot of sense for an extension installed from source)
    ...

Issue: [vscode$25159](https://github.com/Microsoft/vscode/issues/25159) Support development extension installations


___

## Big Work Time

> @nikhil13 I resented it earlier

I resented Atom last year when I was looking for Notepad++/Sublime Text alternatives. Atom was too slow. I could not take it. I was very used to Sublime Text and Notepad++ which are incredibly fast. However I got impressed with VSCode. Despite it being also written in Javascript with Electron framework as Atom. It seems faster than Atom, but does not seems as faster as Sublime Text and Notepad++ in general.

For now, I doubt VSCode could be a replacement for Sublime Text because:

> The file will not be displayed in the editor because it is either binary, very large or uses an unsupported text encoding. Issue: [vscode$6474](https://github.com/Microsoft/vscode/issues/6474) VS Code fails to open big files (60MB)

As a Javascript application, still not sure the fact whether is can handle files bigger as 1GB or 5GB, as Sublime Text can handle: [Forum$9832](https://forum.sublimetext.com/t/sublime-text-performance-with-very-large-files/9832/20?u=addons_zz) Sublime Text performance with very large files.

Now I got an Open Source text editor to work with, VSCode. With already several issues to work through. Initially I am going through the:

1. [vscode$25159](https://github.com/Microsoft/vscode/issues/25159) Support development extension installations

Because I just clone the extensions with git on the extensions folder and do all the changes there. Currently when I am contributing to an existent extension, VSCode keep upgrading & overriding my git extension fork with the latest release available on the marketplace. Now I am looking into the VSCode source to find where it is doing such, and cut it out when I have the extension forked as a `git` repository.

> @nikhil13, It would be really nice if you could open source Sublime Text finally, so that all users who are moving to Atom or VS code or bracket due to all these issues could stay.

The problem about Open Sourcing Sublime Text is that it would still a C++ application and segmentation faults are its fidelity. As well said by @facelessuser:

> To me, open source doesn't mean projects get lots of love, it may get more love, but a large percent of users don't want to actually contribute to an open source project except to tell you you to add their beloved feature, or fix this particular issue.

So @nikhil13, what would be your VSCode core features you are planing to get working on? Did you compile the VSCode from its source code or are you just downloading the Microsoft Build? For the first time I downloaded the Microsoft Build, to see how things were. Later when I decided to give a try as an Sublime Text alternative I started looking into how to compile it from the source.

And I would have to say, I got a really hard time trying to compile VSCode from its source code. It just seems anyone else other than the Microsoft development team and some other community gurus does so. I am not a experienced Javascript programmer, I just know the basis. I could not figure out the miracle expected from them to build the source code. The build instructions where not a cook recipe. But after opening a issue on their issue tracker, I found a response from they about what steps should I take. https://github.com/Microsoft/vscode/issues/30909

Comparing the Atom build with the VSCode build, was really different. With Atom I just had to run one command and everything were completed successfully. On the instructions page, they state a lot of stuff. But seems I already had everything ready after the VSCode build, because I only had to run the command:
```
cd C:\
git clone https://github.com/atom/atom.git
cd atom
script\build
```

And the final build release of Atom was completed. But for VSCode I still do not know what miracle it is expected to generate a release build. The issue I just pointed there, still with this question in open. But hey, it is open source, I can contribute for the project creating the build steps require to create the release build. But the problem is, how much time will take me to learn it? Why the development team, i.e., the guys who know how to do it, do not did it already? Any ways if some day I got really interested in doing it, I can employ more time. For now, I figured out some other way to deal it the build process, not requiring to build a release version. Therefore I am good and can move on into fixing and creating other things.



____

## The Open Source Initiative

> @facelessuser My personal experience with open source is that you have a small percent of contributors, and a much larger user base that wants a piece of your time for their idea or concern.

Oh, I was that bad boy several times. Though, not everything I reported was something was making trouble to me. That is, when I saw some error popping out, I just take the basis and open a issue on its issue tracker. But just because there is a error, does not mean the error is something breaking my workflow. So, most times I do not stop everything I am doing and start debugging and looking how to fix it.

For example, on the package MarkdownLight I had opened this [issue #13](https://github.com/sekogan/MarkdownLight/issues/13) on Nov 21, 2016. But just today I had it fixed. I did so because I was typing a markdown, and that bug messed with my entire document style. So I had two options:

1. Go on the same issue and post: (Bumping it)
    1. `Please heelllllllpppp`
    1.  `Still not working`
    1. `Any news on this?`
1. To change the markdown syntax, to some other one.
1. To use another text editor.
1. To fix the problem for good.

Today I choose to fix the problem for good. Commit: [evandrocoan/MarkdownLight@2d92bd5](https://github.com/evandrocoan/MarkdownLight/commit/2d92bd50a006768cc23cb6311c67a4fff9f2fba2). But no pull requests made. As there is already one pull request mine, upgrading the syntax from `.tmLanguage` to `.sublime-syntax`.

I usually do not not do pull requests because most developers went MIA (Missing In Action). But sometimes they emerge from the ashes, and got me by surprise. Which by the fact, this is some other feature I need to implement for Sublime Text. Loop through all my forks and check whether the original project owner is starting updating it.

My idea is to do this an automatic process. Except when `git` cannot merge the changes automatically, then he sends me a big warm warning about the unmerged changes. I should do it this vacation, but I decided for now on to move on from Sublime Text and start working with VSCode. I would came back into implement this for Sublime Text on the next vacation time. Because well, now Sublime Text is crashing and I fu***** hate things crashing. So, as VSCode is open an source program, not written in C++, has bigger changes to not let down never.

Why would I think so? Well lets us use the current situation. Sublime Text is crashing sometimes, and there is nothing I can do about, other than cry to the Sublime Text development team. But now let us suppose, VSCode start crashing. Which are my options?

1. Start crying to development team.
1. Fix the damn thing myself.

Then `Wow, super-boy. The man who fixes everything!` No way, I can barely fix my misspellings errors on this text. However, comparing between the options with VSCode and Sublime Text, I much prefer VSCode because I can much more than stay just sitting and crying waiting for the others to fix my problems.

Also there is more on the equation than just the Sublime Text core crashing. Which are the dedicated time, and efforts I spent on Sublime Text. I have to consider the option that Sublime Text team will consider that my crashing problems are not good enough for their attention because I am the only one complaining about.

Though they are correct, on the business man point of view. Just one user troubling is not enough to spend time looking over his problems. Therefore I also have my own business man point of view. I am, developing several resources and employing huge amounts of time with Sublime Text and my Sublime Text Studio toolset collection. I have to consider that at some point Sublime Text can just became unfixable and I had no other option than not use Sublime Text any more. So, I cannot make Sublime Text, a closed source project, my only escape point.

That is where enters VSCode. I am not saying that VSCode will be my savior and that Sublime Text is dead. Much by the opposite. VSCode could definitely die and my only option would Sublime Text, or something else as `vim`, `Notepad++`, `Atom`, etc. But for now I am going to put on pause the Sublime Text stuff and start diving more into VSCode and develop the Code Text Studio, which is the same toolset I had been preparing for Sublime Text last year. However its has a big difference, it includes the source VSCode on the installation step. Which does not happen on the Sublime Text version, as it is a closed source project.

I hope this increases my changes of success, however we also need to increase the point of view. I am not the only one the equation, but just a very tiny small portion of the game. The ones who really matter are the big mass of developers. They decide how the game ends, who wins and are the losers.

Whether VSCode is going to be a success depends on the the masses adheres to its use and engages on its development. Also counts how much more time Microsoft pretends to employ its man power on develop the VSCode for free. If Microsoft stopped working on it, I am not sure about how much time would last the development of VSCode. Maybe the community employment (me, you, everybody else who works for free) should be enough. May be not. Issue: https://github.com/Microsoft/vscode/issues/31289 (How much time Microsoft pretends to employ on VSCode?).




image

On that time, it was eating about 1.7GB of ram:

image

After adding the first time Sublime Text hanged like this for a half-hour, until I forced kill it:

froze_while_typing

@evandrocoan
Copy link
Author

This crashes are cause by the package:

  1. https://github.com/shagabutdinov/sublime-goto-last-edit-enhanced "GotoLastEditEnhanced"

Removing that package fixes this issue. On build 3142, the crashes seems to be fixed, however it created another similar issue:

  1. add_regions causes Sublime Text to hang for ever after eating 1.81GB of RAM #1846 add_regions causes Sublime Text to hang for ever after eating 1.81GB of RAM

Which stills present on the new build of the package shagabutdinov/sublime-goto-last-edit-enhanced#4

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants