{"id":882,"date":"2004-08-30T20:05:25","date_gmt":"2004-08-31T00:05:25","guid":{"rendered":"\/?p=882"},"modified":"2004-08-31T12:22:58","modified_gmt":"2004-08-31T16:22:58","slug":"bbedit-8","status":"publish","type":"post","link":"https:\/\/mjtsai.com\/blog\/2004\/08\/30\/bbedit-8\/","title":{"rendered":"BBEdit 8"},"content":{"rendered":"<p>\r\n<a\r\nhref=\"http:\/\/www.barebones.com\/products\/bbedit\/index.shtml\">BBEdit\r\n8<\/a> is now shipping, and there are copious <a\r\nhref=\"http:\/\/www.barebones.com\/support\/bbedit\/arch_bbedit80.shtml\">\r\nrelease notes<\/a>, far too many to discuss. If I don&rsquo;t mention one of\r\nthe new features, it doesn&rsquo;t mean that I dislike it (or that like it),\r\njust that I didn&rsquo;t have anything in particular to say about it.\r\n<\/p>\r\n\r\n<p>\r\nBBEdit&rsquo;s interface, long derided as behind the times, has been re-done\r\nusing Nib files, and it uses sheets and drawers&mdash;where they make\r\nsense&mdash;as well as the font panel. The spelling checker is now non-modal.\r\nAlthough under the hood the changes were likely major, on the surface\r\nthe differences are minor. Overall, BBEdit 8 still feels like BBEdit, only\r\nbetter.\r\n<\/p>\r\n\r\n<p>\r\nThere is one major interface change, though: BBEdit can now open more\r\nthan one document in the same window. This is similar to how Xcode and\r\ntabbed browsers work, and I&rsquo;ve never really been a fan of this kind of\r\ninterface. I think that&rsquo;s because I&rsquo;ve never seen it done right. BBEdit\r\n8 gets it almost right, though, and as a result this feature has been\r\ngrowing on me. I often have many different documents open in BBEdit,\r\nfrom different projects, and grouping them into a few windows makes\r\nthem easier to manage. There&rsquo;s less overhead than in using BBEdit&rsquo;s\r\nFile Groups, and as a result I am using the Documents drawer more\r\noften. The main problem is that the resulting window arrangements are\r\ntoo ephemeral. They should be saveable, along with the palette\r\npositions, in Workspaces, or else someone should write an AppleScript\r\nthat saves and restores window states. Also, I can&rsquo;t tab into the\r\nDocuments drawer; I have to click in it, which almost defeats the\r\npurpose of type-selecting.\r\n<\/p>\r\n\r\n<p>\r\nCodeless Language Modules are here at last. There is already a module\r\nfor <a\r\nhref=\"http:\/\/daringfireball.net\/2004\/08\/apache_config_module\">Apache\r\nConfiguration Files<\/a>. BBEdit still uses its code-based language\r\nmodules for most of the built-in languages, and so it kind of offers\r\nthe best of both worlds: speed and accuracy for the common and\r\ndifficult-to-parse languages, and easy extensibility for languages with\r\nstandard tokenization. However, we&rsquo;re not <em>quite<\/em> there yet,\r\nbecause the codeless language modules are a little under-powered. They\r\ndon&rsquo;t support regular expressions so, for example, the Apache module\r\ncan&rsquo;t color the pseudo HTML tags. Only one set of keywords is supported\r\nper language. And there is no way to take advantage of BBEdit&rsquo;s\r\nexisting language modules, e.g. to embed your new language (or one of\r\nthe built-ins) into HTML. Language modules are still limited to\r\ncoloring and the function pop-up; there is no language-sensitive\r\nindentation or navigation assistance, as in Emacs.\r\n<\/p>\r\n\r\n<p>\r\nOther notes:\r\n<\/p>\r\n\r\n<ul>\r\n\r\n<li>Language guessing is much better. CVS integration is improved, with\r\nsupport for Perforce added, and Subversion on the way.\r\n<\/li>\r\n\r\n<li>Preferences are now stored using the defaults system.<\/li>\r\n\r\n<li>It&rsquo;s nice that the HTML checker can ignore parts of documents and\r\nalso check partial documents.<\/li>\r\n\r\n<li>Multi-file Find and Replace is much improved, with more flexible\r\nfolder selection and background processing. Whenever I hear about a new\r\ntext editor that&rsquo;s &ldquo;better than BBEdit,&rdquo; the first thing I do is open its\r\nFind and Replace window. Then I run back to BBEdit.<\/li>\r\n\r\n<li>Text Factories are kind of neat, but BBEdit was already\r\nscriptable.<\/li>\r\n\r\n<li>Reopen Using Encoding, Compare Front Documents, and the new\r\n<tt>bbdiff<\/tt> tool obsolete similar home-grown scripts that I&rsquo;d been using.<\/li>\r\n\r\n<li>State is now stored in a property list, keyed by path, rather than\r\nin resource forks. As a result, when I move my files around (or just let them sit around for a few weeks), BBEdit\r\nforgets minor state, like the window position and insertion point, and\r\nmajor state, like the encoding and tab settings.<\/li>\r\n\r\n<li>The Convert to ASCII command is gone. Straighten Quotes is a poor\r\nsubstitute.<\/li>\r\n\r\n<li>If only Apple would let third-party developers display Xcode\r\ncompilation errors and access CodeSense.<\/li>\r\n\r\n<\/ul>","protected":false},"excerpt":{"rendered":"<p>BBEdit 8 is now shipping, and there are copious release notes, far too many to discuss. If I don&rsquo;t mention one of the new features, it doesn&rsquo;t mean that I dislike it (or that like it), just that I didn&rsquo;t have anything in particular to say about it. BBEdit&rsquo;s interface, long derided as behind the [&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":"","apple_news_api_id":"","apple_news_api_modified_at":"","apple_news_api_revision":"","apple_news_api_share_url":"","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":[],"class_list":["post-882","post","type-post","status-publish","format-standard","hentry","category-technology"],"apple_news_notices":[],"_links":{"self":[{"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/posts\/882","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=882"}],"version-history":[{"count":0,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/posts\/882\/revisions"}],"wp:attachment":[{"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/media?parent=882"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/categories?post=882"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/tags?post=882"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}