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 "<tab>" to expand/collapse nodes
 - Use "<backtab>" to cycle visibility of all nodes
 - Use "C-c C-o" to open links

* 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 "<backspace>" 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 "<backtab>" 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 <char> have been replaced by C-c C-<char> 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 <monnier@gnu.org>.
