2.0 to 3.0 Changes
The following is a list of many of the new features, enhancements and bug fixes that were added between Sublime Text 2.0 and Sublime Text 3.0.
-
Performance
- Significantly improved startup time
- Significantly improved file load times
- Significantly improved Replace All performance
- Improved responsiveness when the system is under high CPU load
- Improved rendering performance with a large number of gutter icons
- Improved sidebar performance when folders contain many thousands of files
- Improved file change detection
- Improved rendering performance
- Improved protection against degenerate syntax definitions
- Removed undesirable animation during startup
- Improved console scrolling performance on high resolution displays
- Improved handling of files with extremely long lines
- Faster loading of large, plain text files
- Mac: Improved rendering performance, especially on high resolution screens
- Mac: Reduced CPU usage when gpu_window_buffer is enabled
- Linux and Mac: Improved memory usage
- Linux: Improved rendering performance for some systems with Nvidia graphics
-
Software Updates
- A new auto update system for Windows and Mac
- Added Linux repositories for apt, yum and pacman
- All binaries on Windows and Mac are signed, all Linux packages have available GPG signatures
-
Goto Definition
- Added Goto Definition, powered by an indexer that uses syntax definitions to find symbols
- Added Goto Symbol in Project
- Added Jump Back and Jump Forward commands, available from the Goto menu, for navigating between around using definitions
- Goto Definition popup will be shown when hovering mouse over a symbol. This is controlled with the show_definitions setting.
- Added Indexing Status to the Help menu to give more information about what the indexer is doing
- Added index_exclude_patterns setting to control which files get indexed
- The setting index_workers controls how many background processes are used by the indexer
-
Themes
- Refreshed UI theme
- New icon
- Alternate theme, Adaptive, that inherits colors from the color scheme
- Support for High DPI displays on all three platforms
- Themes may now be switched on the fly without artifacts
- Added theme switcher with live preview via the command palette
- Added sidebar icons and loading indicators
- Many additions and bug fixes to the theme engine, plus full documentation
- Mac: Support for custom color window title bars on OS X 10.10+
-
Fonts
- Improved font selection on all platforms, allowing selection of different weights by name
- Added setting theme_font_options to control font rendering of UI elements
- Font geometry issues that prevent bold or italics are now printed in the console
- Mac: OS X 10.11 and macOS 10.12+ default to using San Francisco for the UI font
- Mac: Italic fonts are synthesized when not available in the typeface
- Windows: Font rendering defaults to DirectWrite unless using Consolas or Courier New
- Windows: Improved fallback font handling in UI elements
-
Color Schemes
- Added new color schemes Breakers, Mariana and Sixteen, derived from the excellent work of Chris Kempson and Dmitri Voronianski
- Added color scheme switcher with live preview via the command palette
- Color scheme documentation
- Added popupCss key, for defining default popup style sheets
- Added phantomCss key, for defining default phantom style sheets
- Scope naming documentation
-
General UI
- Settings now open in a new window, with the default and user settings side-by-side
- Added image preview when opening images
- Encoding and line endings can be displayed in the status bar with the show_encoding and show_line_endings settings
- Sidebar remembers which folders are expanded
- Previewing files from the sidebar creates a preview tab
- Improved animation in the side bar
- Deleting a file via the side bar will first close the corresponding view, if any
- Minimap view rectangle auto hides (controlled by the always_show_minimap_viewport setting)
- Pressing right in the Goto Anything overlay will open the selected file without closing the overlay
- Goto Anything supports :line:col syntax in addition to :line
- Command Palette now remembers the last entered string
- Enhanced pane management
- Previewing a file from the side bar will no longer add an entry to the Open Files section of the side bar
- Added tab scrolling, controlled by the enable_tab_scrolling setting
- Added Panel Switcher to status bar
- Improved Console Panel scrolling behavior
- Tweaked window closing behavior when pressing ctrl+w / cmd+w
- Automatically closing windows when the last tab is dragged out
- Changed tab close behavior: the neighboring tab is now always selected
- When the last file is closed, a new transient file is created automatically
- remember_open_files setting is now defaults to false. Note that this change will have no effect if the hot_exit setting is left at its default value of true
- Ctrl+Tab ordering is stored in the session
- Added remember_full_screen setting
- Added setting always_prompt_for_file_reload
-
OS Integration
- Symlinks are followed by default in folders added to the side bar
- Atomic file saves are available via the atomic_save setting
- Mac: Handle layout changes due to macOS Sierra tabs
- Mac: Improved default web browser detection
- Mac: the user's default shell is executed and environmental variables are set in the plugin Python environment
- Mac: 10.7 or later is required
- Mac: 64 bit only
- Mac: System version of Python is no longer a dependency
- Mac: Fixed exec command on 10.7
- Mac: Fixed incompatibility between Dictionary lookup and gpu_window_buffer
- Mac: Fixed context menus not working when the application is in the background
- Mac: Added support for line numbers sent via apple events
- Mac: Added 'New Window' entry to dock menu
- Mac: The subl executable is now signed
- Linux: Starting from the command line will daemonize the process by default
- Linux: Fixed version incompatibilities with libffi
- Linux: Added menu hiding
- Linux: Fixed incorrect handling of double clicks in the Find panel
- Linux: Fixed incorrect underscore display in some menus
- Linux: Added sudo save
- Linux: Fixed a file permission issue when running without --wait
- Posix: Using correct permissions for newly created files and folders
- Windows: Fixed erroneous entries in system menu
- Windows: New style Open Folder dialogs are used on Vista and later
- Windows: SSE support is no longer required for 32 bit builds
- Windows: Added command line helper, subl.exe
- Windows: Popup windows are able to receive scroll wheel input
- Windows: Added more descriptive errors when the Update Installer fails to rename a folder
- Windows: Fixed incorrect window sizing after making a maximised window full screen
- Windows: sublime_text.exe now has CompanyName set in VERSIONINFO
- Windows: Updated code signing certificate to no longer use SHA1
- Windows: plugin_host.exe is now signed
-
Syntax Definitions
- Added a custom regex engine that matches multiple regexps in parallel, for faster file loading and indexing
- Added new syntax definition file format, .sublime-syntax, with enhanced features and testing support
- Scope naming documentation
- Added a build system for syntax definitions, including a variant for evaluating syntax definition performance
- .tmLanguage files may contain a hidden setting, to indicate they shouldn't be displayed to the user
- The new show_scope_name command shows the scope in a popup
-
Projects
- Added Edit Project to the Command palette
- Projects are exposed to the API
- Multiple workspaces can be created for a single project
- When adding folders to the sidebar, symlinks are not followed by default. This can be changed by enabling follow_symlinks in the project.
- "Remove all Folders from Project" now prompts to confirm
-
Editor Control
- Right clicking on a URL will show an "Open URL" menu item
- Improved word wrap behavior
- Improved quote auto pairing logic
- Smarter word navigation
- Tweaked brace matching logic
- Added settings caret_extra_top, caret_extra_bottom and caret_extra_width to control the caret size
- Added auto_complete_cycle setting
- Added minimap_scroll_to_clicked_text setting
- Added invert_selection command
- Auto complete now works as expected in macros
- Added Paste from History
- Fixed Redo sometimes restoring the selection to the incorrect location
-
Build Systems
- Reworked how Build Systems are selected (More Information)
- Build Systems may now declare "keyfiles" (e.g., 'Makefile' for the Make build system) to better auto detect which build system to use
- Improved handling of build systems that generate lots of output
- New windows always use the automatic build system, rather than the build system of the last used window
- Build errors are now shown inline at the location where they occurred. This is controlled with the show_errors_inline setting.
- Added shell_cmd key, which supersedes cmd, with more intuitive syntax
- Make syntax build system has an improved error message regex
- Syntax file can be specified for the output
- Word wrap is enabled by default
- Build systems may define a cancel command using the "cancel" key
- Mac: Control+C will cancel the current build
-
Find/Replace
- Find and Replace panels automatically resize when multi line strings are entered
- Find panel has a drop down arrow to select previous items
- Added <current file> option to Find in Files
- Find in Files will no longer block when FIFOs are encountered
- Find: Find in Selection will no longer be automatically selected, setting auto_find_in_selection restores older Find in Selection logic
- Find: Removed Reverse option
- Find in Files: Improved handling of binary files
- Find in Files: Line numbers are hidden in the output
-
Spell checking
- Improved spell checking word selection behavior
- Spell checker now reads from manually edited user preferences on the fly
- Added spelling_selector setting, to control what text is checked for misspellings
- Misspelled words can now be added to the dictionary, in addition to being ignored
- Fixed Ignored Words not persisting after exiting
- Fixed a long standing issue with spell checking and non-ascii characters
-
Input Handling
- Improved matching algorithm used for Goto Anything and Autocomplete, now accepts transposed characters
- Mac: Added Touch Bar support
- Linux: Update X11 selection on clipboard every time selection changes
- Linux: Improved MOD3 modifier key handling
- Windows: Added touch input
- Windows: Fix ctrl+` shortcut for UK (ISO) keyboards
- Windows: ctrl+alt+p is no longer bound by default, due to compatibility issues with some keyboard layouts
-
Unicode
- Many improvements to unicode support
- Added combining character rendering
- Character classes in regex searches and syntax definitions are now unicode aware
- Goto Anything matching now utilized unicode case insensitivity
- Improved support for unicode in Windows package directory paths
- Fixed some unicode handling issues in Goto Anything
-
Packages
- Added a menu item and command palette entry to install Package Control
- Default packages are now on GitHub
- Packages by default are now kept in .sublime-package files, and individual files may be overridden by users
- Fixed an edge case when loading third party packages from unicode paths on Windows
- Added Profile Events to the Command Palette, to help identify slow plugins
-
Default Packages
-
Rewrites of the following syntax definitions:
- ASP
- Batch File
- C#
- C++
- C
- CSS
- D
- Go
- HTML
- Java
- JavaScript
- LaTeX
- Markdown
- Objective-C++
- Objective-C
- PHP
- Python
- R
- Ruby
- Rust
- Scala
- SQL
- TCL
- XML
- YAML
- HTML and XML tags are closed when </ is entered. This is controlled by the auto_close_tags setting
- Improved auto indent rules for many syntaxes
- Fixed incorrect menu mnemonics
-
Rewrites of the following syntax definitions:
-
API/Extensibility
- Plugins run out-of-process, helping prevent packages from crashing the UI
- Significantly improved communication speed with plugin_host
- API is now threadsafe
- Some API events are now run asynchronously
- Plugin loading has been revamped, resolving a number of edge cases
- Upgraded from Python 2.6 to Python 3.3
- Various unicode and ctypes patches from Python 3.4 have been backported to 3.3
- The _ssl module is provided on all platforms, and includes a statically-linked copy of OpenSSL 1.0.2k
- All platforms include the sqlite3 and bz2 modules
- The termios module is provided on Linux and Mac
- Plugins can define plugin_loaded() and plugin_unloaded() module functions. plugin_loaded() will be called when the API is ready to use.
- Plugins may insert small HTML/CSS documents, called Phantoms, inline in the editor control
- Added ability for plugins to show popup windows with HTML content
- A custom HTML and CSS engine named minihtml powers popups and phantoms
- Added Phantom and PhantomSet classes
- Added ViewEventListener class
- Added EventListener.on_hover(view, point, hover_zone) method for responding to mouse hover events
- Added EventListener.on_text_command() and EventListener.on_window_command() to run after commands are executed
- Added EventListener.on_post_text_command() and EventListener.on_post_window_command()
- Added EventListener.on_pre_close() callback
- Fixed EventListener.on_query_completions() not working correctly in some circumstances
- Added functions to get and set visibility of the sidebar, minimap, status bar, tabs and menu
- Added Window.status_message()
- Added Window.extract_variables()
- Window.show_quick_panel() now accepts the flag sublime.KEEP_OPEN_ON_FOCUS_LOST
- Window.show_quick_panel() will now scroll to the selected item when shown
- Window.show_quick_panel() accepts an on_highlighted callback
- Tweaking handling of Window.show_quick_panel() when items is a mixed list of strings and sequences
- Added Window.find_output_panel(), Window.destroy_output_panel(), Window.active_panel() and Window.panels()
- Added Window.create_output_panel() now accepts an optional parameter, "unlisted"
- Added Window.settings() and Window.template_settings()
- Window.open_file() now accepts an optional group parameter
- Added is_valid() method to View and Window, to determine if the handle has been invalidated
- View.begin_edit() / View.end_edit() are no longer accessible
- Added View.show_popup() and related functions
- Added View.is_auto_complete_visible()
- View.insert() returns the number of characters inserted
- View.command_history(0, True) now returns the last modifying command, as expected
- Added View.find_by_class()
- Added View.expand_by_class()
- Added View.command_history()
- Added View.close()
- Added View.show_popup_menu()
- View.sel() supports negative indices
- View.add_regions() will accept package relative paths for the icon
- View.add_regions() can show underlines
- View.window() will now work even if the view isn't frontmost
- Added View.is_primary()
- Added Sheet.view()
- Selection.add() no longer ignores the xpos
- Fixed Selection.contains()
- Implemented Settings.add_on_change() and Settings.clear_on_change()
- Fixed settings objects getting invalidated too early with cloned views
- Plugins may now call Settings.clear_on_change() within a callback from Settings.add_on_change()
- Calling Settings.add_on_change() from within a settings change callback won't cause the added callback to be run
- Added sublime.yes_no_cancel_dialog()
- Added sublime.expand_variables()
- Added sublime.load_resource(), sublime.load_binary_resource() and sublime.find_resources()
- Added sublime.encode_value() and sublime.decode_value()
- Added sublime.get_macro()
-
Robustness
- Files can now be renamed when only the case has changed
- File encoding of open files is now stored in the session
- Stability improvements for Find in Files when using regular expressions that result in significant backtracking
- Many improvements to file change detection, fixed various crashes
- Fixed Minimap refusing to draw on very large windows
- Improved change detection for files that disappear and reappear, as happens with disconnected network drives
- Fixed a crash that could occur when directories are being rapidly deleted and recreated
- Fixed a crash that occurred when dragging rows scrolled out of view in the side bar
- Fixed a long standing plugin_host crash triggered via modal dialogs
- Fixed a scenario where changes to .tmPreferences files weren't being picked up
- Fixed a crash that could occur with an invalid result_file_regex settings
- Fixed not being able to click on the selected row of the auto complete popup
- Fixed tabset background being set to the wrong color on startup if different colored tabs are used
- Improved handling of deleted files when restoring sessions
- Fixed file truncation when using hexadecimal encoding
- Using Google Breakpad to automatically report crashes
- Mac: Workaround for an OS issue with zero size windows and OpenGL views
- Mac: subl command line tool no longer uses Distributed Objects, resolving some intermittent failures
- Mac: Fixed Emoji & Symbols popup failing to insert text in some cases
- Mac: Fixed file change notifications from freezing UI on macOS Sierra
- Windows: Added support for inserting characters from outside of the BMP
- Many other small, or edge-case, crash fixes