Haskell Mode NEWS -*- org -*- This file uses Org mode. Some useful (default) key-bindings: - Use "C-c C-n"/"C-c C-p" to jump to next/prev heading - Use "" to expand/collapse nodes - Use "" to cycle visibility of all nodes - Use "C-c C-o" to open links * Changes in 17.5 - See [[https://github.com/haskell/haskell-mode/compare/v17.4...v17.5][Git history]] * Changes in 17.4 - See [[https://github.com/haskell/haskell-mode/compare/v17.3...v17.4][Git history]] * Changes in 17.3 - See [[https://github.com/haskell/haskell-mode/compare/v17.2...v17.3][Git history]] * Changes in 17.2 - See [[https://github.com/haskell/haskell-mode/compare/v17.1...v17.2][Git history]] * Changes in 17.1 - Require at least Emacs 25.1 - Many fixes and minor improvements - Improved compatibility with newer GHC and Cabal versions * Changes in 16.1 - Require at least Emacs 24.3 - Implemented standalone deriving indentation - Removed haskell-indentation-ifte-offset - Implemented electric characters - Added LiquidHaskell annotation highlight - Introduced haskell-hasktags-path defcustom - Added font lock tests for pattern synonyms - Hardcoded haskell-ghc-supported-extensions/options - Added multi-line input in haskell-interactive - Added haskell-mode-stylish-haskell-path - Added Windows CI builds - Added syntax highlight to Yesod rules quasi quote - Added support for line continuation in #define's - Added support unterminated strings in indentation - Implemented /italic/ and *bold* for haddock - Added significant speedups in font-lock engine - Added support for full complexity of backtick syntax - Operators at the end or beginning of line force expression continuation in indentation - Map haskell-mode-format-imports to C-c C-, to avoid conflict with haskell-indent - Improve auto add dependencies in cabal - Fix inferior-haskell warning font lock for GHC 8.0 * Changes in 13.20 - Require at least Emacs 24.1 - Honor equals on its own line in data decl - Honor equals on separate line after guards - Allow haskell-process-path-* to be lists - Fontify True/False in cabal mode - Align | with = in data declarations - Remove haskell-package.el - Run stylish-haskell before save - Improved lexeme parsing in haskell-lexeme - Add haskell-interactive-copy-to-prompt - Remove haskell-mode-contextual-space and related var - Make haskell-indent-region do nothing - Add c2hs mode - Improve hasktags handling - Move documentation from wiki to haskell-mode manual * Changes in 13.18 - Removed haskell-bot - Implement shallow indentation - Removed haskell-simple-indent - Removed haskell-indentation show dynamic positions - Improved indentation inside multiline strings - Implemented font-lock for quasi quoted XML, HTML and JavaScript - Added '{type|data} family' to font-lock-keywords-create - Started using undercover.el for emacs lisp coverage - Added keybinding for `haskell-cabal-visit-file` - Added type role to font lock - Detect and respect the comma style of a section in cabal files * Changes in 13.16 - Improved parsing of comma lists in haskell indentation - Declared turn-on-haskell-indentation as obsolete - Improved QuasiQuote font lock - Fixed indentation for Unicode symbols - Improved completion engine - Added support for interaction with stack ghci - Added haskell-forward-sexp - Added overlays to haskell load - Made use of lexical binding for all emacs lisp sources - Improved indentation of guards with commas - Made three indentation modes mutually turn each other off - Added an additional trigger for pragma suggestions - Improved and documented `toggle-scc-at-point` in manual * Changes in 13.14 - Add official Haskell Mode logo - Add auto deploy for html manual - Improve presentation mode - Font Lock refactoring and improvements - Properly delimit operators in prettify mode - OPTIONS and LANGUAGE completion using ghci - Merge hi2 (haskell-indentation attempt 2) in place of haskell-indentation - Prompt to reconfigure when Cabal demands it - Fontify pragmas while fontifying comments - Operators are fontified - Remove all mentions of cabal-dev - Merge hsc-mode into haskell-mode - Get type information from ghci in interaction-mode - Prettify Haskell types in eldoc support - Added haskell-hoogle-url - Fix w3m-haddock in the case of no local files * Changes in 13.12 - Added haskell-bot.el - Added support for cabal repl build targets - Automatically add import lines via Hoogle - Automatically add package to cabal file - Added w3m-haddock.el - Added debugger mode - Added preliminary :present support - Added haskell-sort-imports - Added haskell-complete-module - Support if and multi-way if in indentation - Add support to generate tags on windows - Add haskell-language-extensions variable - Improve haskell-simple-indent mode - Improve test cases * Changes in 13.10 - Small fix for haskell-simple-indent: Certain indentation situations cause valname-string to be nil, which haskell-trim did not handle gracefully (naturally, since nil != ""). - Luke Hoersten's Shnippet merged in under snippets/. - haskell-presentation-mode is now a haskell-mode derived mode. - Small improvement to haskell-process-do-info (works on constructors now and underscored names). - Add haskell-indent-spaces configuration variable. - The command string to run cabal commands is slightly more configurable. See: C-h f haskell-process-do-cabal-format-string * Changes in 13.8 See also [[https://github.com/haskell/haskell-mode/compare/v13.07...v13.08][detailed Git history]]. - Make `haskell-simple-indent-mode' a proper minor mode with `SInd` as mode-line lighter - Support popular "λ> " prompt in inf-haskell by default - Hide internal `*print-haskell-mode*' buffers (used when `haskell-interactive-mode-eval-mode' is active) - Add tab-completion support for haskell-interactive-mode (requires `:complete' command support in GHCi) - Add support to `haskell-process-do-info` to perform `:browse!` query on module name when called on import statement line - `haskell-decl-scan-mode': - New customize group `haskell-decl-scan' - New flag `haskell-decl-scan-bindings-as-variables' for controlling whether to put value bindings into the "Variables" category. - New flag `haskell-decl-scan-add-to-menubar' for controlling whether to add "Declarations" menu entry to menu bar. - New manual section node `(haskell-mode)haskell-decl-scan-mode' - Add support for [[http://www.haskell.org/ghc/docs/latest/html/users_guide/syntax-extns.html#lambda-case][LambdaCase]] syntax extension to `haskell-indentation` - Change `haskell-indentation-mode' to never jump back a whole line when pressing DEL. The old behavior can be restored by setting `haskell-indentation-delete-backward-jump-line' to t - New convenience function `haskell-cabal-visit-file' for locating and visiting most likely `.cabal` file associated with current buffer - Add support for [[http://www.haskell.org/ghc/docs/latest/html/users_guide/syntax-extns.html#package-import][PackageImports]] and [[http://www.haskell.org/ghc/docs/latest/html/users_guide/syntax-extns.html#safe-imports-ext][SafeHaskell]] syntax extensions to `haskell-decl-scan-mode' parser - Add `turn-{on,off}-haskell-doc' commands as aliases for the existing `turn-{on,off}-haskell-doc-mode' commands - Add support for "cabal repl" process type to `haskell-interactive-mode' - Add new Haskell compilation sub-mode and associated `haskell-compile' command * Changes in 13.7 See also [[https://github.com/haskell/haskell-mode/compare/v13.06...v13.07][detailed Git history]]. - Convert NEWS (this file) to Org mode style and include NEWS file in package and add command for visiting NEWS file (M-x haskell-mode-view-news) - Officially drop support for versions prior to Emacs 23 - New work-in-progress Info manual for haskell-mode - Remove deprecated `haskell-{hugs,ghci}' modules - Font-locking changes: - Remove deprecated `turn-on-haskell-font-lock` function - Improve font-locking of type-signatures in presence of newlines - Use `font-lock-preprocessor-face' instead of the previously used `font-lock-warning-face` for CPP directives - Use `font-lock-warning-face` instead of the previously used `font-lock-preprocessor-face` for Git merge conflict annotations. - Improvements to `haskell-move-nested' module: - Add support for operating on active regions - New interactive commands `haskell-move-nested-{left,right}` which support numeric prefix arguments for controlling the amount of shifting to apply. - Add `haskell-unicode-input-method.el` to distribution (enable with `turn-on-haskell-unicode-input-method`) - Fix all byte-compilation warnings - Build-system: - For in-place installation, `haskell-site-file.el' is renamed to `haskell-mode-autoloads.el` - Auto-generate ELPA compatible README file by extracting header of haskell-mode.el - New "make check" target - Add Travis-CI build jobs for testing byte-compilation with multiple Emacs versions - Reorganize customize settings - Add new convenience function for browsing all Haskell Mode settings (M-x haskell-customize) - Add `:link' keywords pointing to the new Info manual - Add `:group' keywords to modes to make (M-x customize-mode) work - Create new customization groups `haskell-interactive' and `inferior-haskell' to clean up namespace - Create new customization group `ghc-core` containing the two new customization variables `ghc-core-program` and `ghc-core-program-args`. - Improvements to haskell-interactive-mode - Add support for deleting compile messages superseded by recompile/reloads (M-x customize-variable RET haskell-interactive-mode-delete-superseded-errors) - Fix `C-u M-x haskell-process-do-type` inserting bad signatures - Integrate with Emacs' `next-error` subsystem - Add "C-c C-f" binding to REPL keymap for enabling `next-error-follow-minor-mode' - Add support for `-ferror-spans`-style compile messages - Add `-ferror-spans` as default for `haskell-process-args-ghci` - Add optional argument to `haskell-session-{all,installed,project}-modules' to suppress session-creation. This is useful for yasnippet usage, see commit 517fd7e for an example. - Change default for `haskell-process-path-ghci` to a static "ghci" - Fix `haskell-interactive-switch` not selecting the REPL window - Make `*haskell-process-log*` buffer configurable (controlled via new `haskell-process-log` customize option) * Changes in 13.6 See also [[https://github.com/haskell/haskell-mode/compare/2_9_1...v13.06][detailed Git history]]. - Switch to new versioning scheme - Switch to MELPA/Marmalade based packaging - Cleanup/refactor build-system - Enhance `M-x haskell-version` to report more detailed versioning information - Make haskell-interactive-mode emulate comint/eshell history navigation (see commit 0e96843 for more details) - Improvements to haskell-interactive-mode - Improve killing/restarting haskell-interactive sessions - Improve directory prompting and resolution - Fix redundant-import suggest trigger to support qualified imports - Detect all abbreviations of an user-inputted ":quit" - Fix regexps for recent GHC 7.x compiler messages - Customizable commandline args for GHCi (M-x customize-variable RET haskell-process-args-ghci) - New command to load or reload via prefix argument (M-x haskell-process-load-or-reload) - Fix haskell-interactive-mode prompt detection - Add cabal-ghci as supported process mode - Add a customization option for the visibility of multi-line errors (M-x customize-variable RET haskell-interactive-mode-hide-multi-line-errors) - Add forward declarations to reduce Elisp bytecompile warnings - Improvements to `haskell-indentation` - Add support for the UnicodeSyntax tokens `→`, `←`, and `∷`. - Indent "=" following data/type/newtype declarations. - Align "->"/"→" arrows in types under "::"/"∷" - Make customizable whether "" deletes indentation too (via `haskell-indentation-delete-backward-indentation` and `haskell-indentation-delete-indentation`) - Properly indent 'rec' keyword, same as 'mdo' - Minor optimizations. - Add support for "'"-prefixed constructors (-> DataKinds) to font-locking - New experimental haskell session menu mode (M-x haskell-menu) - Various minor cleanups/fixes/improvements... * Changes in 2.9.1 See also [[https://github.com/haskell/haskell-mode/compare/2_9_0...2_9_1][detailed Git history]]. - Bugfix release adding missing autoload declaration * Changes in 2.9.0 See also [[https://github.com/haskell/haskell-mode/compare/2_8_0...2_9_0][detailed Git history]]. - This is the first release after haskell-mode was migrated to GitHub - New experimental `haskell-interactive-mode' module implementing a new REPL interaction mode for GHCi sessions to eventually replace the existing "inf-haskell" mode. - New `haskell-process-cabal' command for interaction with cabal-install - New `haskell-checkers' module - Update haskell-cabal-mode font-lock keywords - Improve scrolling of hoogle output (haskell-mode.el) - Derive `haskell-mode` from `prog-mode` for Emacs 24+ - Add new binding for "" to haskell-mode's keymap which unindents current line - New modules `haskell-navigate-imports`, `haskell-sort-imports' and `haskell-align-imports' for operating on module import lines in Haskell source code - Add new binding for "C-c C-." to haskell-mode's keymap to sort and realign Haskell module imports - Add new binding for "C-c i" to haskell-mode's keymap to jump back and forth from/to the current Haskell module's module import section. - New `inferior-haskell-kind' function for querying kind via GHCi's ":kind" - New `inferior-haskell-send-decl' for sending declarations to GHCi (bound to "C-x C-d" by default) - Add new `haskell-doc-use-inf-haskell` customization variable - Add support for bird-style literate haskell editing and a new related customization variable `haskell-indentation-birdtrack-extra-space' - Font locking improvements - Add support for Git's merge annotation (with `font-lock-preprocessor-face') - Improve `import', `foreign import' and `foreign export' font locking - Add support for `rec', `proc' and `mdo` as keywords - Make whitespace within `-- |' and `{- |' optional when possible - New `haskell-move-nested` module providing utilities for interactively {in,de}denting nested "hanging" blocks. - Add stylish-haskell support (enable via `haskell-stylish-on-save` customization variable) - Add support for generating tags on save (enable via `haskell-tags-on-save' customization variable) - Set sensible dabbrev defaults in haskell-mode - Added `SCC` pragma insert/delete commands (`haskell-mode-insert-scc-at-point` and `haskell-mode-kill-scc-at-point') - New experimental `haskell-mode-contextual-space' command - And a couple more cleanups/fixes/improvements... * Changes in 2.8.0 (since 2.7.0) See also [[https://github.com/haskell/haskell-mode/compare/2_7_0...2_8_0][detailed Git history]]. - Minimal indentation support for arrow syntax - Avoid opening a new inf-haskell window if one is already visible. Windows on other virtual desktops or iconified frames don't count. - Force comint-process-echoes to nil - Autolaunch haskell-mode for files starting with #!/usr/bin/runghc and similar - Added minimal major mode for parsing GHC core files, courtesy of Johan Tibell. There is a corresponding Haskell menu entry. - Allow configuration of where-clause indentation; M-x customize-group haskell-indentation. * Changes since 2.6.4 - fill-paragraph (M-q) now only affects comments, and correctly handles Haddock commentary. adaptive-fill-mode is turned off, as it was interfering. - Yet more unicode symbols - Better support for unicode encoding of haskell source files - mdo correctly indented - Indentation fixes, fixes to the fixes, and fixes to the fixes to the fixes - New command: M-x haskell-check, calls (by default) hlint on the current file. Also bound to C-c C-v. You can also use the flymake minor mode with this. * Changes since 2.5.1 - Parser corrections for haskell-indentation and haskell-decl-scan - haskell-indentation: Pressing tab in the rightmost position now moves to the leftmost, by default with a warning. - Typo fix: One haskell-indentation variable had ended up in the haskell-ntation customize group. - haskell-hoogle aliased to hoogle, haskell-hayoo aliased to hayoo - Courtesy of Alex Ott: - Additional unicode symbols for font-lock-symbols: () == /= >= <= !! && || sqrt - M-x haskell-hayoo search added, opens using browse-url - Bug-fix for inferior-haskell-type - If haskell-indentation errors out, it now fail-safes to inserting a literal newline or deleting one character, for return and backspace respectively. * Changes since 2.4: - haskell-indentation, a new minor mode for indentation. * Changes since 2.3: - Update license to GPLv3. - New derived major mode for .hsc files. - Removed the C-c C-r binding to reload a file. You can still call inferior-haskell-reload-file (and/or bind it to your favorite key, including C-c C-r) or you can now use C-u C-c C-l. - C-c C-d looks up the symbol at point in the Haddock docs. - Haddock comments are highlighted with font-lock-doc-face if it exists. - Use `tex' rather than `latex' for haskell-literate. - inf-haskell.el tries to find the root of the module hierarchy to determine the root of a project (either by looking for a Cabal file or relying on the `module' declaration line). If all works well, this will make C-c C-l automatically switch to the root dir, so that dependencies in other directories are automatically found. If it doesn't, complain and/or set inferior-haskell-find-project-root to nil. - The new command haskell-hoogle helps you query Hoogle from Emacs. * Changes since 2.2: - Trivial support for Cabal package description files. - Minor bug fixes. * Changes since 2.1: - There are now commands to find type and info of identifiers by querying an inferior haskell process. Available under C-c C-t, C-c C-i, and C-c M-. - Indentation now looks back further, until a line that has no indentation. To recover the earlier behavior of stopping at the first empty line instead, configure haskell-indent-look-past-empty-line. - inf-haskell can wait until a file load completes and jump directly to the first error, like haskell-ghci and haskell-hugs used to do. See the var inferior-haskell-wait-and-jump. * Changes since 2.0: - inf-haskell uses ghci if hugs is absent. - Fix up some binding conflicts (C-c C-o in haskell-doc) - Many (hopefully minor) changes to the indentation. - New symbols in haskell-font-lock-symbols-alist. * Changes since 1.45: - keybindings C-c have been replaced by C-c C- so as not to collide with minor modes. - The following modules are now automatically activated without having to add anything to haskell-mode-hook: haskell-font-lock (just turn on global-font-lock-mode). haskell-decl-scan (just bind `imenu' to some key). - In recent Emacsen, haskell-doc hooks into eldoc-mode. - haskell-hugs and haskell-ghci are superceded by inf-haskell. - Indentation rules have been improved when using layout inside parens/braces. - Symbols like -> and \ can be displayed as actual arrows and lambdas. See haskell-font-lock-symbols. - Tweaks to the font-lock settings. Among other things paren-matching with things like \(x,y) should work correctly now. - New maintainer .