Compared to an IDE Bluefish lacks functionality like an integrated debugger[18] or a WYSIWYG web design component.[19][20]
Bluefish's features include syntax highlighting[21] and auto-completion for 47 different markup and code languages (including Mediawiki syntax[22]), customizable via an XML language definition format.[23] It furthermore features code folding, auto-recovery,[16] upload/download functionality (on systems where GVfs is available), a code-aware spell-checker,[24][16] a Unicode character browser, project support,[25] code navigation and bookmarks.[26] It also supports regular expressions and multi-file search and replace.[20] It has a multiple document interface[27] that can quickly load large codebases or websites,[28][25] and features full screen editing.[18]
For web development it has many toolbars with specific dialogs and wizards to automatically insert the correct HTML tags[21] in addition to autocompletion for all tags and their attributes[20] together with Zencoding/emmet[29][19]
Bluefish is extensible via plugins and external tools and scripts.[25][16][30] Many scripts come preconfigured, including statical code analysis, and syntax and markup checks for different markup and programming languages such as lint or weblint.[31] Also a simple marco-like feature called "custom menu" helps to speed up repeating actions.[32] A large set of macro's for PHP and HTML come preconfigured.[33]
History
Bluefish was started by Chris Mazuc and Olivier Sessink in 1998 to facilitate web development professionals on Linux desktop platforms.[34] Bluefish was at the time one of the only web development focused editors on the Linux.[35][36] Linux, due to the LAMP stack (first introduced in 1998[37]), was becoming the most popular web hosting platform.[38] Bluefish was quickly part of the major Linux distributions, such as Debian Potato (released in 2000),[39] Knoppix 2.1[40][41] and the first Fedora release.[42]
The development of Bluefish was initially inspired by two other editors: the configurable syntax scanning and highlighting was inspired by the NEdit and the user interface was inspired by Homesite which was only available on Windows. Bluefish was originally called THTML editor, which was considered too cryptic; then ProSite, which was abandoned to avoid clashes with web-development companies already using that name.[43] Finally the name Bluefish was chosen after a logo (a child's drawing of a blue fish) was proposed on its mailing list.[34]
The 1.0.x branch was released in 2005, and included a new logo. In 2005 a Bluefish fork of 1.3 was made to create Winefish, a LaTeX editor.[44] The 2.0.x branch[45] was a big rewrite, changing to the GTK 2 GtkTextView widget and a new syntax scanning engine based on a deterministic finite automaton.[46] The 2.2.x branch,[47] which is the current stable branch, supports both GTK 2 and GTK 3.
Although Bluefish is not an official part of the GNOME desktop environment, it is often considered so because it uses the GTK toolkit and integrates well in GNOME.[48]
Source code and development
Bluefish is hosted on SourceForge, and was one of the early projects to join.[49] Initially CVS was used for code version control, later moving to SVN.
Bluefish is mostly written in C[50] and uses the cross-platform GTK library for its GUI widgets.[51] Markup and programming language support is defined in XML files that are loaded with Libxml2. The optional plugins require libenchant, python and libgucharmap.[52] Bluefish is built with standard configuration and compilation tools such as Automake, Autoconf, LLVM and GCC. Windows binaries are built with MinGW. On OS X there are ports on Fink[53] and Macports,[54] but the official binary is built using the Gtk-OSX-Integration[55]
Bluefish has a plugin API in C that has been used mainly to separate non-maintained parts (such as the infobrowser-plugin) from maintained parts. Bluefish also supports loosely coupled plugins: external scripts that read standard input and return their results via standard output can be configured in the preferences panel.[25] Various scripts for JavaScript, JSON, CSS, and HTML formatting are included in the Bluefish distribution.
^Benjamin Mako Hill, Matthew Helmke, Corey Burger (2009). The Official Ubuntu Book. Prentice Hall. ISBN978-0137021208.{{cite book}}: CS1 maint: multiple names: authors list (link)
Generic books on development on the Linux desktop that recommend and/or cover the use of Bluefish:
William Rothwell (2017). Linux for Developers: Jumpstart Your Linux Programming Skills. Addison-Wesley. ISBN9780134657288.
Benjamin Mako Hill, Matthew Helmke, Corey Burger (2009). The Official Ubuntu Book. Prentice Hall. ISBN978-0137021208.{{cite book}}: CS1 maint: multiple names: authors list (link)
Graham Williams (2007). Debian GNU/Linux Desktop Survival Guide. Togaware. ISBN978-0-9757109-1-3.