{"id":53826,"date":"2026-11-10T11:49:06","date_gmt":"2026-11-10T16:49:06","guid":{"rendered":"https:\/\/mjtsai.com\/blog\/?p=53826"},"modified":"2026-11-10T11:49:06","modified_gmt":"2026-11-10T16:49:06","slug":"bbedit-16-1","status":"publish","type":"post","link":"https:\/\/mjtsai.com\/blog\/2026\/11\/10\/bbedit-16-1\/","title":{"rendered":"BBEdit 16.1"},"content":{"rendered":"<p><a href=\"https:\/\/www.barebones.com\/support\/bbedit\/notes-16.1.html\">Bare Bones Software<\/a>:<\/p>\n<blockquote cite=\"https:\/\/www.barebones.com\/support\/bbedit\/notes-16.1.html\">\n<p>Introducing &ldquo;Language Playgrounds&rdquo;, a new interface for creating language modules to add support for languages which are not included from the factory. With this comes a new language module architecture: Declarative Language Modules (DLMs), which supersede the original codeless language modules (CLMs) and provide a much richer language support experience.<\/p>\n<\/blockquote>\n\n<p>There are technotes about <a href=\"https:\/\/www.barebones.com\/support\/technotes\/LanguagePlayground.html\">Language Playgrounds<\/a> and <a href=\"https:\/\/www.barebones.com\/support\/technotes\/DeclarativeLanguageModules.html\">Declarative Language Modules<\/a> (which are now JSON instead of plists).<\/p>\n\n<blockquote cite=\"https:\/\/www.barebones.com\/support\/bbedit\/notes-16.1.html\">\n<p>A configured Highlight Pattern will match text in any open document, and highlight it using the configured color, including an alternative for Dark Mode, if desired. The pattern can be either a literal search string or a Grep pattern.<\/p>\n<p>[&#8230;]<\/p>\n<p>There is a setting in the Editing preferences which controls globally whether Highlight Patterns are shown (at all) and this can be configured per-language via the Custom Settings tab in the Languages preferences.<\/p>\n<\/blockquote>\n\n<p>I absolutely love this new feature. First it&rsquo;s incredibly useful for file types that don&rsquo;t have language modules or where a language module doesn&rsquo;t really make sense. For example, my apps generate log files, and highlight patterns let me color code them. Which parts are from the OS vs. my frameworks vs. app-specific code? I can highlight in red any especially important strings that I don&rsquo;t want to miss.<\/p>\n\n<p>Second, I see highlight patterns as a way to customize the built-in language modules. These are not open-source, and it&rsquo;s not worth my time to try to code my own replacements, but highlight patterns make it possible to add my own colors on top of what&rsquo;s built-in.<\/p>\n\n<blockquote cite=\"https:\/\/www.barebones.com\/support\/bbedit\/notes-16.1.html\">\n<p>Integrated the W3C HTML5 syntax checker into the application. This provides isolation against network issues, rate limits, and service misbehavior.<\/p>\n<p>[&#8230;]<\/p>\n<p>There&rsquo;s a new color setting for &ldquo;Instance variables&rdquo; in the &ldquo;Text Colors&rdquo; settings. This depends on language modules generating the appropriate run kind, and\/or LSP servers returning the appropriate semantic token kind.<\/p>\n<p>[&#8230;]<\/p>\n<p>Added a language module for TaskPaper, with coloring as well as navigation via the Function menu.<\/p>\n<p>[&#8230;]<\/p>\n<p>Added a language module for coloring and navigating <code>diff<\/code> output.<\/p>\n<p>[&#8230;]<\/p>\n<p>Fenced code blocks in Markdown documents are now syntax-colored\nin the language named by the block&rsquo;s qualifier (<code>```python<\/code>, <code>```js<\/code>,\n<code>```diff<\/code>), when a matching language module is\ninstalled.<\/p>\n<\/blockquote>\n\n<p>See also: <a href=\"https:\/\/tidbits.com\/watchlist\/bbedit-16-1\/\">Agen Schmitz<\/a>.<\/p>\n\n<p>Previously:<\/p>\n<ul>\n<li><a href=\"https:\/\/mjtsai.com\/blog\/2026\/06\/01\/bbedit-16\/\">BBEdit 16<\/a><\/li>\n<\/ul>","protected":false},"excerpt":{"rendered":"<p>Bare Bones Software: Introducing &ldquo;Language Playgrounds&rdquo;, a new interface for creating language modules to add support for languages which are not included from the factory. With this comes a new language module architecture: Declarative Language Modules (DLMs), which supersede the original codeless language modules (CLMs) and provide a much richer language support experience. There are [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"apple_news_api_created_at":"2026-11-10T16:49:13Z","apple_news_api_id":"b6f8e6ac-b301-478a-a0a1-1ff0757b6eb0","apple_news_api_modified_at":"2026-11-10T16:49:13Z","apple_news_api_revision":"AAAAAAAAAAD\/\/\/\/\/\/\/\/\/\/w==","apple_news_api_share_url":"https:\/\/apple.news\/AtvjmrLMBR4qgoR_wdXtusA","apple_news_coverimage":0,"apple_news_coverimage_caption":"","apple_news_is_hidden":false,"apple_news_is_paid":false,"apple_news_is_preview":false,"apple_news_is_sponsored":false,"apple_news_maturity_rating":"","apple_news_metadata":"\"\"","apple_news_pullquote":"","apple_news_pullquote_position":"","apple_news_slug":"","apple_news_sections":"\"\"","apple_news_suppress_video_url":false,"apple_news_use_image_component":false,"footnotes":""},"categories":[2],"tags":[154,75,81,30,32,2784,337,270,712,68],"class_list":["post-53826","post","type-post","status-publish","format-standard","hentry","category-technology","tag-bbedit","tag-developertool","tag-html5","tag-mac","tag-macapp","tag-macos-27","tag-markdown","tag-parser","tag-taskpaper","tag-texteditor"],"apple_news_notices":[],"_links":{"self":[{"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/posts\/53826","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/comments?post=53826"}],"version-history":[{"count":1,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/posts\/53826\/revisions"}],"predecessor-version":[{"id":53827,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/posts\/53826\/revisions\/53827"}],"wp:attachment":[{"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/media?parent=53826"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/categories?post=53826"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/tags?post=53826"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}