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