Download

Sublime Text 4 is the current version of Sublime Text. For bleeding-edge releases, see the dev builds.

Sublime Text may be downloaded and evaluated for free, however a license must be purchased for continued use. There is currently no enforced time limit for the evaluation.

Changelog

Build 4180

6 Aug 2024
  • Various syntax highlighting improvements
  • Newly rewritten Lisp syntax highlighting thanks to deathaxe
  • Linux: Implemented kinetic scrolling under Wayland
  • Linux: Implemented xdg-activation protocol for wayland
  • Linux: Fixed crash on wayland related to tab dragging
  • Linux: Fixed issues with tab dragging under Wayland
  • Linux: Added workaround for KDE drag-drop issue causing the caret to get stuck (Also fixed in kwin 6.0.4)
  • Windows: Implemented scroll-resetting behavior when dragging scroll bar
  • Windows: Fixed copied text being truncated by null character
  • Windows: Fixed custom top-level menu items not being themed
  • Windows, Linux: Allow numbers as menu mnemonics
  • Mac: Files moved to trash now have a "Put Back" option
  • Mac: Fixed issues related to dragging the edges of windows
  • Mac: Fixed security entitlements for plugins not applying properly
  • Mac: Fixed some issues with applying find clipboard
  • Mac: Fixed multi-line environment variables not being read correctly
  • Mac, Linux: Fixed leak of shared memory
  • Added "goto_anything_file_preview" setting
  • Added "image_file_patterns" for controlling which files are automatically opened as an image
  • Added File > Open file as Text/Image for explicitly opening a file as an image or as text
  • Added context menu for image tabs
  • Improved behavior of Expand Selection in Python docstrings
  • The "menu" key now works in the sidebar
  • Reduced memory usage when editing large files
  • Full Screen is now restored when exiting Distraction Free Mode
  • Text selection is now retained when using Split View
  • Improved handling of invalid UTF-16 sequences
  • Fixed overlay scrollbars blocking input when invisible
  • Improved accuracy of scope selectors
  • Added enable toggle to indexing status dialog
  • Opening folder history in Sublime Merge now works recursively
  • Added entry in command palette for opening mouse bindings
  • Added syntax argument to run_syntax_tests command
  • Fixed syntax tests not running when files aren't UTF-8 encoded
  • Files containing colons can now be opened from the command line
  • Fixed window closing when switching projects under certain conditions
  • Fixed focus of new windows starting on the last group when "remember_layout" is enabled
  • Fixed line numbers not being rendered correctly in some cases
  • Fixed an issue with rulers displaying incorrectly while scrolling under OpenGL
  • Fixed fold markers not having background rendering
  • Fixed PATH not being restored correctly when a build system fails to launch
  • Fixed git repository details not always showing
  • Find: Find in files history menu now deduplicates entries
  • Find: Fixed settings not applying to find-in-files
  • Find: Fixed a case where incorrect settings would be used when run immediately after find_under_expand
  • Tab Dragging: Improved clarity in mixed-dpi setups
  • Tab Dragging: Fixed various positioning bugs in mixed-dpi setups
  • Tab Dragging: Fixed misalignment of labels in some cases
  • minihtml: Improved error messages
  • minihtml: Added support for white-space: pre and white-space: pre-wrap
  • minihtml: <style> tags are now allowed within <head>
  • minihtml: HTML is no longer parsed within <style> tags
  • minihtml: Made HTML entity parsing more lenient
  • Theme: New unmodified files no longer have the "dirty" attribute
  • API: All functions are now available at import time
  • API: Optimized auto-completion
  • API: Fixed ViewEventListener occasionally leaking
  • API: Fixed Settings.get not always returning the default value on failure
  • API: Fixed View.style_for_scope not always returning the right "source_line"
  • API: Added View.utf8_code_units and View.utf16_code_units

Build 4169

24 November 2023
  • Fixed a stack overflow when closing large amounts of files
  • API: Fixed backwards compatibility breakage with Sheet.is_transient()
  • API: Fixed a crash with Window.set_view_index
  • Linux: Fixed a rare crash with the save dialog
  • Windows: Fixed a rare crash related to cursor hiding

Build 4166

20 November 2023
  • Various syntax highlighting improvements
  • Index collation is now done incrementally
  • Fixed an issue where animations were causing excessive redraws
  • Find in files now truncates long lines according to the "find_in_files_context_characters" setting
  • Fixed auto-complete not suggesting tokens from the current line
  • Added Mouse Bindings to the Preferences menu
  • Added Preferences > Font > Choose… for an easy way to select a font
  • Added Copy Path to Sidebar context menu
  • Fixed minimap border not rendering
  • Fixed color emoji blending with transparency
  • Fixed line-number alignment when using a variable-width font
  • Fixed double clicking a find in file result sometimes scrolling to the wrong line in the file
  • Fixed case where opening a file from Sublime Merge wouldn't jump to the right line
  • Improved bookmark toggling
  • Improved performance of "Definitions" popup
  • Improved Join Lines behavior
  • Improved behavior of Indent command on empty lines
  • Added "ruler_width" setting
  • Added current_result command
  • Fixed case conversions not taking all-caps into account
  • Fixed an auto-indent issue
  • Fixed an issue with find_under_expand when the find panel is focused
  • Fixed disabling "highlight_gutter" resulting in "highlight_line" begin disabled
  • Fixed some incorrect behavior when converting a multi-line selection to Title Case
  • Fixed a memory corruption bug related to block carets
  • Fixed Quick Switch Project… from the settings window closing the window
  • Fixed "move_to_limit_on_up_down" setting not working
  • Shift+Enter now also hides the incremental find panel
  • Fixed macro recording in Vintage package not working
  • Updated to OpenSSL 1.1.1v
  • Fixed run_syntax_tests command not running symbol tests
  • API: Added sublime.choose_font_dialog
  • API: Allow case insensitive comments using TM_COMMENT_CASE_INSENSITIVE
  • API: Fixed instability related to overlapping API calls
  • API: Fixed crash when an edit token is passed to the wrong view
  • API: Fixed some issues related to plugin initialization
  • API: ListInputHandler now supports initial_selection
  • API: Fixed ListInputHandler not selecting the first result when initial_text is provided
  • API: Added update_text option to sublime.encode_value
  • API: Fixed expand_to_paragraph in paragraph.py incorrectly unpacking tuple
  • Linux: Improved tracking of fullscreen state
  • Linux: Fixed some memory leaks related to fonts
  • Linux: Fixed "ui_scale" setting not being applied to fonts correctly in some cases
  • Windows: Added CRLF handling for text drag an drop
  • Windows: Fixed wrong font extents causing glyphs to be cut off at the top
  • Windows: Fixed caret movement across phantoms when using fractional scaling
  • Mac: Improved animation frame timing
  • Mac: Implemented window cascading
  • Mac: Recent files are now cleared when "update_system_recent_files" is disabled
  • Mac: Fixed Copy as HTML not working
  • Mac: Fixed subl not always finding the correct application bundle
  • Mac: Fixed "regex_auto_escape" not working

Build 4152

2 August 2023
  • Mac: Fixed compatibility with macOS 10.14 and earlier

Build 4151

2 August 2023
  • Various syntax highlighting improvements
  • Added "fold_style" setting for controlling syntax-based code folding
  • Last tab in a group can now be selected with alt+9 (Windows/Linux) and cmd+9 (Mac)
  • Split View retains the original view's viewport position
  • Added WebP support
  • Improved minimap viewport contrast with large amounts of visible text
  • The window title now indicates whether Sublime Text is running with administrator privileges
  • Improved indentation detection for files with many single space indents
  • Improved caret positioning when using text wrapping
  • Fixed files in side-bar not properly reflecting their git status
  • Find in Files: Tab multi-select modifier keys are now supported
  • Find in Files: Fixed search results not being ordered
  • Find in Files: Paths can now be quoted
  • Find in Files: Added "find_in_files_suppress_errors" settings
  • Find in Files: Added "find_in_files_context_lines" settings
  • Find in Files: Added "find_in_files_side_by_side" setting
  • Find in Files: Ongoing searches are no longer canceled on renamed buffer
  • Find in Files: Fixed ./ not working in the "Where" field
  • Find: Added "regex_auto_escape" setting
  • Find: Fixed find settings confusion when run immediately after find_under_expand
  • Find: Fixed find in selection skipping empty selections
  • Fixed word wrap being too early in some cases
  • Fixed scrolling by page not always including a full line of context
  • Fixed first character beyond ASCII range not being decoded/encoded for short code pages
  • Improved performance when drag selecting columns
  • Fixed annotations displaying incorrectly when "ui_scale" is set to something other than 1
  • Fixed recent file list not being updated when quitting with hot exit disabled
  • Fixed high memory usage edge case in minihtml parsing
  • Fixed case where open file/folder dialogs didn't respect "default_dir" setting
  • Reopen Closed File now uses the window's file history by default rather than global history
  • Fixed tabs of deleted files incorrectly showing as modified in some cases
  • Fixed "draw_centered" setting causing incorrect gutter rendering in some cases
  • Fixed extra commands being included for macros in some situations
  • Fixed goto-symbol not showing inside empty groups
  • Fixed column number in the status bar not updating upon changing tab width
  • Fixed issue where the command palette could consume key presses while not having input focus
  • Syntax Highlighting: Improved scope selector performance
  • Syntax Highlighting: Fixed syntax-based folding not working correctly with some indented code
  • Syntax Highlighting: Fixed syntax definition negative symbol tests
  • Syntax Highlighting: Fixed edge case that could break syntax highlighting
  • Syntax Highlighting: Fixed backtracking bug where tokens were being dropped
  • Syntax Highlighting: Fixed some hangs caused by syntax backtracking
  • Syntax Highlighting: Fixed a syntax highlighting performance issue due to backtracking
  • Syntax Highlighting: Fixed a crash when a lazy loaded syntax doesn't exist
  • API: Updated to Python 3.8.12 and OpenSSL 1.1.1s
  • API: The Python 3.3 plugin environment now uses the same OpenSSL as 3.8
  • API: Added support for the "context" key in mousemaps
  • API: Fixed inconsistent focus after Window.open_file()
  • API: The open_file command now supports "transient", "force_group", "clear_to_right" and "force_clone" arguments
  • API: Added Window.num_views_in_group()
  • API: Added sublime.project_history()
  • API: Added sublime.folder_history()
  • Windows: Added alt+shift+p as default keybinding for Quick Switch Project
  • Windows: Fixed a packaging error with the installers
  • Windows: Fixed tooltips sometimes not being removed
  • Windows: Fixed select folder dialog not respecting the initial directory
  • Windows: Fixed lockup that could occur when menus and popups interfere
  • Linux: Files for printing are saved in ~/Downloads if possible to work around snap/flatpak limitations
  • Linux: User config and cache paths are now created at startup if not present
  • Linux: Fixed incorrect mouse behavior at window edges
  • Linux, Mac: Attempt to find the license key for the user when using sudo
  • Mac: Better support for running as root
  • Mac: Fixed extra window being created when ST is launched by opening a file from finder
  • Mac: System setting "click in the scroll bar to" is now respected
  • Mac: Added workaround for Monterey bug causing scrolling to misbehave
  • Mac: Added security entitlements allowing plugins & build systems to request the camera and microphone

Build 4143

11 November 2022
  • Fixed a performance regression in 4142 on color schemes with very complex selectors
  • Folded regions no longer include the trailing newline by default
  • Fixed selection jumping when clicking on a fold marker

Build 4142

10 November 2022
  • Added syntax-based code folding
  • Various syntax highlighting improvements
  • Newly rewritten Haskell syntax highlighting thanks to deathaxe
  • The recent file list is now global instead of per window
  • Files opened in Sublime Text are now added to the system recent file list (See the "update_system_recent_files" setting)
  • Added commands for converting between common identifier cases (See Edit > Convert Case)
  • Added "hot_exit_projects" setting to control what data gets saved in workspace files
  • Added "minimap_horizontal_scrolling" setting
  • Added "open_tabs_after_current" setting for controlling where tabs are opened
  • Added "show_spelling_errors" and "show_line_column" settings
  • Added "goto_anything_exclude_gitignore" setting
  • Added "ruler_style" setting
  • Reworked comment toggling to better handle embedded languages
  • Sub-word separators are now configurable using the "sub_word_separators" setting
  • Added support for Nordic (Windows 865) encoding
  • Reopening a file now asks for confirmation when there are unsaved changes
  • Improved filesystem symbolic link detection
  • Improved performance while open folders are scanned for the side-bar
  • Improved regex performance for syntax highlighting
  • Find: Patterns taken from an open file are now escaped for regex searches
  • Find in Files: Improved binary file detection for find-in-files
  • Find in Files: Find-in-files now supports project-relative patterns starting with //
  • Find in Files: Added the "find_in_files_max_file_size" setting
  • Syntax Highlighting: Context backtraces now link to their origin in sublime-syntax files
  • Syntax Highlighting: Fixed crash caused by starting a branch point at the end of a line
  • Syntax Highlighting: Fixed various syntax highlighting bugs related to backtracking
  • Rendering: Improved performance with large folded regions
  • Rendering: Fixed OpenGL issue related to the wrong context being active
  • Rendering: Fixed shadow related OpenGL rendering bug
  • Rendering: Fixed region rendering edge case
  • Rendering: Improved performance in files with large diffs
  • Rendering: Fixed various issues with faded labels in the sidebar
  • Rendering: Fixed text annotation underlines not drawing when combined with other font styles
  • Sort Lines no longer includes the newline at EOF when nothing is selected
  • Fixed very large unsaved files being lost on hot exit; a prompt is now shown to save them
  • Fixed extraneous window getting created at startup with hot exit disabled
  • Fixed case where multiple reload prompts could show simultaneously
  • Drag operations are no longer interrupted when reloading a file
  • Fixed case where text in command palette was incorrectly colored
  • Fixed side bar button theming issue in the Default theme
  • Fixed sometimes not being able to type a space after completing a snippet
  • Fixed wrong default extension being used in open file dialog
  • Fixed centered views jumping in some cases when whole content is replaced
  • Fixed scroll jumping when folding
  • Fixed Reveal in Side Bar not working in some cases
  • Fixed scroll bar sometimes showing when text is wrapped
  • Fixed sheets not being added to the current selection in some cases
  • Added missing theming attributes to update dialog
  • Linux: System scroll bar overlay settings are now followed
  • Linux: Fixed various issues caused by the C locale
  • Linux: Added safeguard around nested GTK main loops possibly causing data loss
  • Linux: Fixed case where dragging a tab to a window wasn't working
  • Linux: Fixed crash on startup for some desktop environments
  • Linux: Fixed not being able to grab the scrollbar in a maximized window when at the right edge of the screen
  • Windows: Adjusted for the new Windows 11 window border
  • Windows: Open Containing Folder and similar now respect file explorer replacements
  • Windows: Fixed GDI font glow glyph positioning
  • Mac: Fixed license being removed due to network MAC address changing
  • Mac: Fixed cursor getting stuck as a resize handle on Ventura
  • Mac: Recent files are now available without having a window open
  • Mac: Fixed various issues with the quick switch project dialog
  • Mac: Fixed issue where dialogs could be triggered during dialogs
  • Mac: Fixed case when opening an already open file would jump to the start
  • Mac: Added work around for broken modal loops
  • Mac: Fixed case where settings window couldn't be closed
  • Mac: Fixed open file dialog crash with some syntaxes
  • Mac: Fixed scrolling when command modifier key is pressed
  • Mac: Fixed Window/New Tab not working with the Adaptive theme
  • API: Added buffer variable to the console
  • API: A noop command can now be used for keybindings to block default behavior
  • API: "encoded_position": true may be passed to open_file command for the same behavior as sublime.ENCODED_POSITION
  • API: View.context_backtrace can be used to get a stack trace from syntax highlighting
  • API: View.expand_to_scope now returns None when the text point doesn't match the selector
  • API: Added View.expand_to_scope
  • API: Added Window.promote_sheet
  • API: Fixed crash when running hide_panel command from EventListener.on_deactivated
  • API: The toggle_comment command can now take a variant argument for languages with multiple comment variants

Build 4126

21 December 2021
  • Improved OpenGL rendering performance by automatically batching together controls
  • Added support for Chinese standard GB18030 file encoding
  • Added support for CP862 file encoding
  • Resolved various issues tracking symlinks in the side-bar
  • Avoid session data corruption if a crash happens while saving the session
  • subl -n will reuse an existing empty window if the application isn't running
  • Binary files now show as "Binary" syntax instead of "Plain Text" in the status bar
  • Fixed wildcards incorrectly matching subpaths (For settings like "folder_exclude_patterns")
  • Made "find_in_files_max_result_size" not apply when replacing
  • Fixed crash when loading invalid grid layout from session
  • Fixed spell checker incorrectly marking some words as correct if they can't be encoded
  • Fixed rendering order of successive popups
  • Fixed package subfolders sometimes not being loaded when matching the "ignored_packages" setting
  • Fixed layout instability in side bar causing things to occasionally be rendered 1 pixel off
  • Added some missing glyphs to "draw_unicode_white_space": "all"
  • Added "draw_unicode_bidi" setting for drawing unicode bidi characters
  • Added "select_across_groups" setting for opting into the old side bar selection behavior when selecting a single file
  • Fixed "close_windows_when_empty" setting not working
  • Fixed goto-definition preview not closing on escape
  • Fixed quick panel closing on enter when there are no matching entries
  • Syntax Highlighting: Fixed backtracking breaking when creating phantoms or doing a context backtrace
  • Syntax Highlighting: Fixed regression with some syntax definitions introduced in 4115
  • Linux: Added missing libcurl dependency for package managers
  • Linux: Fixed GTK overriding LC_NUMERIC environment variable breaking serialization
  • Windows: Fixed command line not taking focus after closing a waited on file
  • Windows: Fixed crash when OpenGL initialization fails
  • Mac: Aliases are now resolved when using drag and drop
  • Mac: Fixed window sometimes being restored on startup when "create_window_at_startup" is disabled
  • Mac: Fixed native tabs restoration resulting in odd behavior
  • Mac: Fixed subl -b not working
  • Mac: Fixed terminal not being focused after waiting on file
  • Mac: Fixed Window > Merge All Windows merging minimized windows
  • Mac: Fixed various inconsistencies when opening files from finder
  • API: The show_panel command for the find and find in files panels can now take "pattern" and "replace_pattern" arguments
  • API: ListInputHandler.preview is now called with None when no items match the current filter
  • API: Fixed case where Window.project_data() could return an invalid value
  • API: Opening a new pane moves currently selected sheets
  • API: Added Window.move_sheets_to_group
  • API: The commands move_to and move_to_neighbouring now move currently selected sheets

Build 4121

26 October 2021
  • New update dialog that shows versions, license status and links to the changelog
  • Various syntax highlighting improvements
  • Use goto-symbol to jump to specific files in find results
  • Improved color scheme/theme selection UI
  • Layout is no longer remembered when "hot_exit" is disabled. You can change this using "remember_layout"
  • Right-delete now respects "use_tab_stops" setting
  • Various improvements to behavior of moving sheets during window layout changes
  • Improved mini-diff and white space rendering performance under OpenGL
  • Improved performance when reading large files from stdin
  • Fixed regex replace not working on last occurrence when using look-behind
  • Fixed "save_on_focus_lost" not working as expected with the reload dialog
  • Fixed open files not being added to recent file list when "hot_exit" is disabled
  • Fixed snippet completions not respecting word boundaries
  • Fixed extra blank window being opened at startup in some cases
  • Fixed not properly exiting after a prompt when "hot_exit" is disabled
  • Fixed window unexpectedly closing when project has no added folders and "close_windows_when_empty" is enabled
  • Fixed tab selection stack not being updated as expected in some cases
  • Fixed transient sheets persisting when exiting goto-anything
  • Fixed squiggle underline width not scaling properly
  • Fixed line highlighting not working when gutter is disabled
  • Fixed case where folders were being added to existing windows instead of opening in a new window
  • Fixed performance regression under Windows with non-integer DPI scaling
  • Fixed syntax highlighting backtracking-related performance problem
  • Undo stack is now cleared when reading from stdin
  • Added Selection > Expand Selection to Block which has the same behavior as Expand Selection to Paragraph had previously
  • "open_files_in_new_window" is now respected when reading from stdin
  • Added "find_scroll_highlights_limit", "find_highlight_matches_max_size" and "find_regex_highlight_matches_max_size" settings to allow configuring find limits
  • Added newline detection and normalization when changing settings programmatically
  • Sublime Merge menu items are hidden when "sublime_merge_path" is set to null
  • Fixed wrong path sometimes being used when viewing file history in Sublime Merge
  • Fixed focus lost when selected group is closed whilst reducing the number of groups
  • File-specific indentation settings are now persisted across restarts
  • Fixed some edge cases related to "find_in_files_max_result_size"
  • Fixed completions in input panel not utilizing available window space
  • Fixed expand selection to tag not working in XML
  • Fixed current transient sheet unexpectedly closing when using goto-anything
  • Fixed crash related to syntax backtracking and phantoms
  • Fixed being unable to open more than one new empty window
  • Linux: Make selection after middle-click paste consistent with other applications
  • Linux: Fixed race condition with multiple simultaneous command line invocations
  • Linux: Fixed custom title bar label color for some GTK themes
  • Windows: Fixed a case where session could be lost when upgrading
  • Windows: Fixed NTFS alternate data streams being deleted on save
  • Windows: Fixed slow window creation when using OpenGL
  • Windows: Fixed incorrect case being used when opening files from find-in-files with gitignore enabled
  • Windows: Fixed stdout/stderr output data race when building
  • Windows: Fixed hang on modal dialogs when context menu is open
  • Mac: Tweaked text drag-drop behavior to respect NSDragAndDropTextDelay
  • Mac: The setting "use_find_clipboard" can be used to disable global find clipboard integration
  • Mac: Fixed double click not working at the top of a window when in full screen with a custom title bar
  • Mac: Fixed incorrectly reporting successful key event when no command was found
  • Mac: Fixed windows not restoring properly with multi-monitor setups
  • Mac: Fixed window layout issue with native tabs when exiting full screen
  • Mac: Fixed title bar text not fading when out of focus
  • Mac: Fixed reading stdin not working when no windows are open
  • API: Fixed plugin popups sometimes having the wrong placement
  • API: Fixed plugins not loading when a .python-version file is in the User package
  • API: Added Buffer.clear_undo_stack()
  • API: Fixed View.show and View.show_at_center not working from on_load callback

Build 4113

14 July 2021
  • Improved performance when editing large files
  • Improved OpenGL rendering performance
  • Improved handling of deleted files
  • Various syntax highlighting improvements
  • subl can now be used to edit stdin, eg: echo test | subl | cat
  • Syntax and indentation detection is now done when editing stdin
  • Added syntax_detection_size_limit setting for controlling when syntax detection is skipped
  • Theme: Improved scroll puck visibility
  • Theme: Fixed adaptive theme not respecting themed_title_bar setting with light color schemes
  • Middle clicking in the Open Files section of then sidebar will close the clicked on file
  • Preserve Case now works with unicode characters
  • Added reveal_menu setting for disabling revealing the menu when alt is pressed on Linux and Windows
  • Safe Mode key binding can be disabled by creating a file named .Disable Safe Mode Shortcut in the data directory
  • Fixed Ruby syntax highlighting in the Monokai color scheme
  • Fixed a scenario where folders weren't being watched for changes
  • Fixed underlines being drawn behind line highlight
  • Fixed an infinite loop that could occur during syntax highlighting
  • Fixed the append command's scroll_to_end parameter sometimes not working
  • Fixed Goto Symbol sometimes being scrolled incorrectly
  • Fixed multi-select file limit applying to sidebar
  • Fixed auto-complete related hang in some large files
  • Linux: Fixed print sometimes not working
  • Linux: Fixed wrong order of yes/no buttons in GTK dialogs
  • Linux: Fixed letters sometimes being cut off
  • Windows: Always make a new window when launching main executable on Windows
  • Windows: Fixed window icon not scaling properly on Windows
  • Windows: Fixed globs not being expanded in some cases on Windows
  • Mac: Fixed auto theme not changing with OS auto theme on macOS

4 (Build 4107)

20 May 2021

Release Highlights

  • Multi-select tabs to view them side-by-side
  • Context-aware auto complete by finding similar code elsewhere in the current project
  • Symbols have kind information that is shown for completions and navigation
  • Theme can follow system dark mode preference and title bars can be themed on all platforms
  • Syntax highlighting now supports back-tracking and inheritance
  • Many syntax highlighting improvements as well as builtin TypeScript, JSX and TSX support
  • GPU rendering for improved performance. Enabled by default on macOS
  • ARM64 support for Linux and macOS (Apple Silicon)
  • Many plugin API additions particularly to better support plugins like LSP
  • Python 3.8 support for plugins

GPU Rendering

  • New hardware_acceleration setting will composite the UI on the GPU
  • By default, GPU rendering is enabled on Mac, and disabled on Windows and Linux
  • Details about the active GPU will be displayed in the Console

Context-aware Auto Complete

  • The auto complete engine now suggests completions based on patterns in existing code
  • Uses the entire project as a source, instead of just the current view
  • Plugins may specify symbol kind info to be displayed in suggestions list

Tab Multi-Select

  • Multiple tabs can be selected using ctrl/cmd, their contents will be shown side-by-side
  • Selecting multiple files from the sidebar will also preview them simultaneously
  • Included themes have a tab connector joining the active sheet and tab when using sheet multi-select
  • The sidebar can now select multiple files using alt
  • Goto Anything allows opening tabs side-by-side using ctrl/cmd
  • The Definition popup has a dedicated button for opening files side-by-side
  • Multiple tabs can also be selected from the tab dropdown
  • The menu Selection/Tab Selection contains various options for manipulating tab multi-select
  • File/New View into File has been replaced by File/Split View using multi-select

Python 3.8 API

  • Added a Python 3.8 API environment for plugins
  • Plugins can choose Python version via .python-version file in plugin folder
  • Existing plugins are fully supported via legacy Python 3.3 API
  • Many API improvements and additions - see API section for more details

Goto Symbol

  • Goto Symbol in Project is now significantly faster on huge projects
  • Icons are now shown next to symbols, indicating the symbol kind
  • Symbols with 3 characters or less are now indexed

Syntax Definitions

  • Added out of the box support for TypeScript, JSX and TSX - thanks to Thomas Smith
  • Added ability to "branch" within syntax definitions, for non-deterministic or multi-line constructs
  • Many syntax highlighting improvements, including significant improvements to:
  • Significantly improved load times, match times and reduced cache size on disk
  • embed is now lazy loaded, resulting in much higher performance for syntaxes like markdown
  • Added branch and fail for non-deterministic parsing
  • Added version: 2 to fix edge cases while retaining backwards compatibility
  • Added extends to inherit from another syntax definition. Multiple inheritance is supported, provided all parents have the same base syntax
  • Added hidden_extensions
  • Allow using pop alongside push/set/embed/branch
  • Fixed a performance issue with bounded repeats in regular expressions
  • Syntax tests can now assert that reindent is working as expected
  • Syntax tests can now assert that symbols are indexed
  • Prevent infinite include loops via with_prototype
  • Fixed a number of scope related bugs
  • Fixed some regex capture related bugs
  • Added more information to the Show Scope Name popup

OS Compatibility

  • The following operating systems are no longer supported as a result of adding Python 3.8:
    • OS X 10.7
    • OS X 10.8
    • Windows XP
    • Windows Vista

Platform Integration

  • Added automatic dark/light theme and color scheme switching, based on OS theme changes
  • subl - can now be used to read from stdin on all platforms
  • Windows will remember their Virtual Desktop/Space/Workspace, controlled by the remember_workspace setting
  • Scroll bars now follow platform conventions when clicking on them. Configurable using Scroll Bar.sublime-mousemap
  • Mac: Releases use universal binaries with Apple Silicon support
  • Mac: Updated icon to follow macOS 11 style
  • Mac: Windows will now stay maximized when using Mac window tabs
  • Mac: Fix various issues with the wrong cursor being used
  • Linux: ARM64 builds are now available
  • Linux: Text drag and drop is now supported
  • Linux: Added proper support for Wayland
  • Linux: Touch screen events are now handled
  • Linux: Better support for copy+paste with other applications that don't support utf8 text
  • Linux: Native file dialogs like those for KDE will be used when configured
  • Windows: IME preview and multi-select support
  • Windows, Linux: Added support for custom title bars
  • Windows, Linux: Use vsync for animations instead of a fixed 60hz
  • Mac, Linux: Improved compatibility with some keyboard layouts

Application Behavior

  • Added Safe Mode, to simulate a clean install. Enabled by passing --safe-mode on the command line or holding shift+alt/option at startup on Windows/macOS respectively
  • Added Help/Report a Bug to link to our public issue tracker
  • Added options to hot_exit setting to control behavior when the last window is closed
  • Fixed a possible case where an update loses the current session
  • Settings containing a UTF-8 BOM will no longer fail to load
  • Added support for previewing TGA and PSD images
  • Added close_deleted_files setting to control behavior of session restoration when files have been deleted on disk
  • Popup windows now use virtual windows for improved performance
  • Improved performance when loading files with very long lines
  • Improved rendering performance on very long lines
  • Improved performance with large session files
  • Data directories have dropped the "3", though if a "3" directory still exists it will be used
  • Mac: Quick Switch Project now works without any windows open
  • Mac, Linux: The cache and index are now located in the proper location (~/.cache and ~/Library/Caches respectively)

Auto Complete

  • Typing the full tab trigger of a snippet will move it to the top of the results
  • Manually typing in the only available completion will hide the auto complete popup
  • .sublime-completion files can now specify annotation, kind and details
  • Ranking quality improvements
  • Improved behavior of completions starting with non-word characters
  • auto_complete_trailing_symbols is now disabled by default
  • cancelCompletion will no longer prevent manual invocation
  • Added the auto_complete_when_likely setting
  • Added auto_complete_preserve_order setting
  • Added auto_complete_include_snippets_when_typing setting
  • Added auto_complete_use_index setting
  • Added auto_complete_use_history setting to control if previous choices are automatically selected
  • Running the auto_complete command when auto complete is already showing will re-query plugins for results
  • auto_complete_selector now applies to the position before the just-typed in character, matching auto_complete_triggers

Input Handling

  • Modifier key taps can now be used as part of a key binding. For example, ["ctrl", "ctrl"] will trigger when Ctrl is pressed twice without pressing any other keys in between
  • Linux: AltGr can now be used in key bindings via altgr
  • Linux: Added a workaround for a touchscreen driver bug, which would cause right click and mouse scrolling to stop working
  • Linux: When the menu is hidden, pressing alt will show it
  • Mac: Fix Pinyin input
  • Mac: Keypad keys can now be bound to as expected
  • Mac: Added key bindings for macOS application tabs
  • Windows, Linux: Hide mouse cursor when typing. Controlled via hide_pointer_while_typing setting
  • Windows, Linux: Fixed being unable to bind Ctrl+Break

Editor Control

  • Added File/Print, which prints via a browser
  • Added Edit/Copy as HTML
  • Build systems now use new annotations functionality instead of phantoms, reducing re-flow
  • Undo history is preserved in the session
  • Comments and layout are preserved when programmatically editing preferences
  • Caret blinking is disabled by default. Set caret_style setting to smooth for previous behavior
  • Improved automatic indentation detection
  • Added relative line numbers, controlled by the relative_line_numbers setting
  • Added setting scroll_context_lines
  • Added setting hide_pointer_while_typing
  • Added setting control_character_style
  • Added Project/Recent/Remove Deleted
  • Added chain command to run multiple commands in series
  • switch_file command now handles filenames with compound extensions
  • The scroll_past_end setting now supports customizing the scroll distance using numbers from 0.0 to 1.0
  • Double-clicking a semi-transient sheet's tab will now fully open the sheet
  • trim_trailing_white_space_on_save can now be set to "not_on_caret"
  • trim_trailing_white_space_on_save now trims only newly inserted trailing whitespace by default. Controlled via trim_only_modified_white_space setting
  • Expanded draw_white_space setting, supporting leading and trailing white space
  • Unicode white space characters, such as the zero width no-break space, are now drawn as hex values. Controlled via draw_unicode_white_space setting
  • Fixed spelling correction to support languages with upper case characters after start of word
  • Added commands to simplify customizing the active theme or color scheme
  • Quick Switch Project will open the selected project in a new window if Ctrl (Cmd on Mac) is held down
  • Added wrap_width_style preference
  • Added console_max_history_lines
  • Added additional settings to control the status bar: show_sidebar_button, show_indentation and show_syntax
  • Console now uses Python syntax highlighting by default
  • Added Central European (Mac) encoding support
  • Key Bindings: Join Lines is now on Ctrl+Shift+J / Cmd+Shift+J
  • Key Bindings: Expand Selection to Indentation is no longer bound by default
  • Key Bindings: Ctrl+J / Cmd+J is now used as a prefix for sequential key bindings, similar to Ctrl+K / Cmd+K
  • Code Folding: fixed some edge-case incorrect behaviors
  • Linux: Added support for alternate font weight names
  • Linux: Selection is no longer cleared when another application makes a selection
  • Linux: Added Ctrl+Space to trigger Auto Complete
  • Linux, Windows: Added Alt+Shift+Left Mouse Button as an alternative column selection binding
  • Linux, Windows: Added Shift+F10 key binding to open the context menu

Text Commands

  • Macros now record Find commands
  • Reworked Jump Back and Jump Forward commands
  • Improved behavior of Wrap Paragraph
  • Improved behavior of Swap Lines
  • Added Revert Diff Hunk
  • Added Selection/Expand Selection as a general mechanism to expand the selection
  • Selection/Split into Lines will now split a selection into words if the selection doesn't contain any newlines
  • Show a sum in the status bar when there are multiple selections and all of them are numbers
  • set_file_type command now accepts "scope:" prefixed syntax names
  • Fixed sort_lines replacing unicode newlines with regular ones

Snippets

  • Added auto_complete_include_snippets setting, for disabling auto complete integration
  • Added ignored_snippets setting, for disabling default snippets

Indexing (Goto Definition)

  • Files ignored by .gitignore are not indexed by default. Controlled via index_exclude_gitignore setting
  • Files without known extensions are no longer indexed by default. Controlled via index_skip_unknown_extensions setting
  • Improved behavior with constantly changing files
  • Significantly improved load times

Files and Folders

  • Saving files is now asynchronous
  • Improved performance when adding directories with extreme amounts of files
  • When save_on_focus_lost is enabled, closing an unsaved file will save and close it, instead of prompting to save
  • Improved behavior of save_on_focus_lost in conjunction with administrator owned files
  • Added reload_file_on_change setting to control if files are automatically reloaded or not
  • folder_exclude_patterns and folder_include_patterns now support project-relative paths, by starting the path with //
  • Folders in the sidebar can be recursively expanded via alt+arrow key
  • Added preview_on_click setting to support only previewing files on left click
  • Windows: Fixed Open Containing Folder for UNC paths
  • Windows: Fixed Save dialog not showing for new files with control characters on the first line
  • Windows: Fixed Ctrl+Backspace inserting a DEL character when a dialog is open in the background
  • Linux: Fix recreated directories not working correctly with file change monitoring
  • Linux: Recursively expanding and collapsing sidebar folders now works with alt or super

Find

  • Find results are highlighted on the scroll bar, controlled by highlight_find_results_in_scrollbar
  • Find in Selection now highlights the area that will be searched
  • Commands can now be run without the find panel having input focus
  • Fix keypad enter not working in find panel
  • Improved find history behavior
  • Find: Various performance improvements with large files using graceful degradation
  • Find: Fixed adjacent matches being skipped when find in selection is in use
  • Find: Fixed find in selection option not being cleared when changing tabs
  • Find: Selection will no longer be reset after Find All is used when finding in selection
  • Find: Results are now properly highlighted on Find All when close_find_after_find_all is turned off
  • Find in Files: Improved performance with large numbers of matches
  • Find in Files: Can now filter by .gitignore
  • Find in Files: Added Preserve Case option for replacements
  • Find in Files: Fix not recursing into directories on networked file systems
  • Find in Files: Hide rulers by default in find results
  • Find in Files: Added Find/Cancel Find in Files menu item
  • Find in Files: Binary file patterns are applied when an explicit folder is given
  • Find in Files: Using "Find in Folder…" from the sidebar context menu will apply project file filters
  • Find in Files: Added close_find_after_find_all preference
  • Find in Files: Added close_find_after_replace_all preference

UI

  • Changed default color scheme to Mariana
  • Added Default Dark theme
  • Added themed_title_bar setting
  • Changed file tab style, adding file_tab_style setting
  • Goto Symbol shows more information about symbols
  • Definitions hover popup shows more information about symbols
  • Sheets without input focus are now dimmed when using included themes
  • Added a New Tab button in the tab bar, and hide_new_tab_button setting
  • Added show_tab_close_buttons_on_left setting
  • Added highlight_gutter and highlight_line_number settings
  • Added the ability to auto hide the menu, tabs, and status bar when typing. See auto_hide_menu and related settings
  • Window title bar can be controlled by show_rel_path and show_project_first settings
  • Tab context menu now includes Close Unmodified Files and Close Deleted Files entries
  • Side bar row highlights now properly reflect the selected tabs
  • Color Schemes: Added glow font option
  • Color Schemes: Added support for the underline font style
  • Color Schemes: Added new property, inactive_selection_border
  • Color Schemes: Slightly darkened the background of Mariana
  • Color Schemes: Added support for stippled_underline and squiggly_underline
  • Color Schemes: .hidden-tmTheme files are now supported by the .sublime-color-scheme convertor
  • Themes: Included themes use variables extensively, making customization simpler
  • Themes: Added style property for title_bar element, for better integration with OS "dark modes"
  • Themes: The tree_row for the file with input focus now gets the attribute highlighted
  • Themes: The settings key now supports objects, with keys being settings and values being a boolean, string or array of strings
  • Themes: Added sheet_contents class to text, image and HTML sheets
  • Themes: Added the background_modifier property for sheet_contents
  • Themes: Added a number of new attributes to tab_control for richer tab theming
  • Themes: The highlighted attribute is only applied to the most recently active sheet, rather that the most recently active sheet in each group
  • Themes: tab_control and sheet_contents classes now synchronize their highlighted and hover attributes
  • Themes: tooltip controls now support animations to their opacity
  • Linux: Show sequential key bindings in the menu
  • Linux: Fixed context menu position being slightly offset

Spell Checking

  • Updated dictionaries
  • Added support for non-utf8 dictionaries
  • Updated Hunspell for improved suggestions
  • System dictionaries are now available on Linux
  • Dictionaries in ~/Library/Spelling are now available on Mac

Rendering

  • Properly query glyph extents in order to avoid cutting off large glyphs
  • Windows, Linux: Added support for per-display subpixel ordering
  • Mac: Improved window resize performance
  • Windows: Fixed rendering bug where other applications could cause persistent artifacts via window animations
  • Windows: Add support for color emoji

API

  • Improved coverage of plugin profiling
  • The cProfile module is now included on Linux
  • Added HTML sheets, which can be created via window.new_html_sheet()
  • repr now works as expected
  • Updated OpenSSL to 1.1.1j
  • .sublime-commands files now support filtering commands via the "platform" key
  • Minihtml now handles list-style-type CSS property - circle, square and disc
  • Minihtml now processes subl: links, running them as commands
  • Minihtml now supports white-space: nowrap
  • Improved minihtml rendering performance
  • EventListener has many new features and bug fixes
    • on_query_completions() can now
      • Return suggestions asynchronously
      • Return command completions
      • Include symbol kind information
    • New: on_init() is called once with list of views opened before plugin was loaded
    • New: on_exit() is called immediately before plugin_host exits, after API is shut down
    • New: on_text_changed() and on_text_changed_async() provide detailed modification info
    • New methods:
      • on_reload()
      • on_revert()
      • on_new_window()
      • on_new_window_async()
      • on_pre_close_window()
      • on_pre_move()
      • on_post_move()
      • on_post_move_async()
      • on_new_project()
      • on_new_project_async()
      • on_load_project()
      • on_load_project_async()
      • on_pre_save_project()
      • on_post_save_project()
      • on_post_save_project_async()
      • on_pre_close_project()
      • on_associate_buffer()
    • Fixed on_selection_modified() to not be called twice when left clicking
    • Fixed on_selection_modified() begin called on non-selection state changes
  • New TextChangeListener for getting callbacks when a text buffer is changed
    • Can be dynamically bound to a Buffer using TextChangeListener.attach and TextChangeListener.detach
    • Methods:
      • on_text_changed()
      • on_text_changed_async()
      • on_revert()
      • on_revert_async()
      • on_reload()
      • on_reload_async()
  • Sheet has some new methods:
    • file_name()
    • group()
    • close()
    • is_semi_transient()
    • Sheet.is_transient
  • View has a number of changes and improvements
    • Fixed newly created views not having a valid viewport before being returned to the API
    • add_regions() now has an annotations parameter, to allow adding a per-region annotation to the buffer. The exec command uses this API for build errors
    • add_regions() calls that add an underline now have that underline applied to whitespace characters
    • show() now takes keep_to_left and animate parameters
    • text_point() and related functions now accept a clamp_column parameter
    • Added "glow" to style_for_scope()
    • Added View.rowcol_utf8(), View.rowcol_utf16(), View.text_point_utf8() and View.text_point_utf16()
    • Added sublime.KEEP_ON_SELECTION_MODIFIED, which can be passed to show_popup()
    • New: element() returns a string describing widget views (find input, quick panel input, etc)
    • New: assign_syntax() sets the syntax used in a view, supports Syntax objects, paths and scope selectors
    • New: syntax() returns the currently set Syntax
    • New: clones()
    • New: sheet() and sheet_id()
    • New: export_to_html()
  • Window has some changes and improvements:
    • show_quick_panel now accepts placeholder text, via the placeholder argument
    • Added sublime.CLEAR_TO_RIGHT and sublime.SEMI_TRANSIENT for use with open_file()
    • Added the flag sublime.REPLACE_MRU for use with open_file(). When multiple sheets are selected, this flag will cause the opened file to replace the most recently used sheet with the file being opened
    • Added the flag sublime.WANT_EVENT for use with show_quick_panel(). This will pass an event dict to the on_select callback. The dict will contain the key modifier_keys, which will be a dict that may contain zero or more of the keys: primary, ctrl, super, alt, altgr
    • open_file now accepts sublime.ADD_TO_SELECTION as a flag
    • New: selected_sheets(), selected_sheets_in_group() and select_sheets()
    • New: workspace_file_name()
    • New: bring_to_front()
  • sublime.ok_cancel_dialog() and sublime.yes_no_cancel_dialog() now accept an optional title parameter
  • Added sublime.open_dialog, sublime.save_dialog and sublime.select_folder_dialog
  • Syntax definitions can be queried via sublime.list_syntaxes(), sublime.find_syntax(), sublime.syntax_from_path(), sublime.find_syntax_by_name(), sublime.find_syntax_by_scope(), and sublime.find_syntax_for_file(). They return Syntax objects
  • Improved sys.stdout to extend io.TextIOBase
  • sublime.executable_path(), sublime.packages_path(), sublime.installed_packages_path() and sublime.cache_path() may now be called at import time
  • Added sublime.SymbolRegion and sublime.SymbolLocation with corresponding methods on View and Window
  • Fix a bug with popup being stuck open when a popup is shown in the hide event handler of another popup
  • Added open_project_or_workspace command
  • append command has new, optional disable_tab_translation argument
  • Added modifier_keys to event dicts when commands are invoked via a menu
  • Added sublime.DYNAMIC_COMPLETIONS. on_query_completions() can return this flag to indicate that completion results should be re-queried as the user types
  • Added sublime.INHIBIT_REORDER. Returned by on_query_competions()
  • CompletionItem now accepts a details parameter, which can include basic HTML
  • CommandInputHandler now has an initial_selection() method
  • Added Region.to_tuple and Phantom.to_tuple
  • Fixed ViewEventListener.on_load_async() sometimes not being called
  • Added sublime.QuickPanelItem() with support for kind info, annotations and basic minihtml
  • Plugins may now add selections to the Jump Back history list via the add_jump_record command
  • Plugins may suppress selections from the Jump Back history list via the jump_ignore_selection region
  • Plugins may now disable the default HTML and CSS completions
  • Added Buffer.id() and Buffer.file_name()
  • The TextInputHandler and ListInputHandler classes may define a method want_event() that returns True to receive an extra parameter, an event dict, when the validate() and confirm() methods are called. The dict will contain the key modifier_keys, which will be a dict that may contain zero or more of the keys: primary, ctrl, super, alt, altgr
  • Add sublime.ui_info() for high-level information about the UI
  • Popups will be properly positioned when displayed near the right-hand side of the editor
  • Popups near the right-hand side of the editor with wrapped lines will now be properly sized
  • Added ListInputItem so that ListInputHandler objects can provide kind info, annotations and details
  • Improvements to the API, applied to the new Python 3.8 environment only:
    • bool(sublime.Selection()) will return False when len() == 0
    • sublime.load_binary_resource() now returns bytes instead of bytearray
    • Added Selection.__iter__()
    • Added Region.__iter__()
    • Added Region.__contains__()
    • Added Settings.to_dict()
    • Settings can now be treated like a dict
    • Plugins starting with _ will be ignored, __all__ global will be respected
    • Events won't be reported until plugin_loaded() has been called
    • .pyc files can now be imported when contained within .sublime-package files, although they will not be scanned for plugins
  • The certifi Python package is preinstalled
  • Significant performance improvements when rapidly printing to the Console
  • Added sublime.log_control_tree(). When enabled, clicking with ctrl+alt will log the control tree under the mouse to the console
  • Added sublime.log_fps(). When enabled, the render times are tracked and logged
  • Added logging status functions:
    • sublime.get_log_commands()
    • sublime.get_log_input()
    • sublime.get_log_build_systems()
    • sublime.get_log_result_regex()
    • sublime.get_log_indexing()
    • sublime.get_log_fps()
    • sublime.get_log_control_tree()
  • Logging functions are now toggle when no argument is passed:
    • sublime.log_commands()
    • sublime.log_input()
    • sublime.log_build_systems()
    • sublime.log_result_regex()
    • sublime.log_indexing()
    • sublime.log_fps()
    • sublime.log_control_tree()
  • Backwards Compatibility Break: The event parameter passed to commands when a minihtml link is clicked changed from a two-element list to a dict with the keys x and y