SublimeHaskell
A Sublime Text 3 plugin for Haskell. Features cabal building, error and warning highlighting, smart completion and ghc-mod integration.
Details
Installs
- Total 54K
- Win 20K
- Mac 19K
- Linux 15K
Dec 22 | Dec 21 | Dec 20 | Dec 19 | Dec 18 | Dec 17 | Dec 16 | Dec 15 | Dec 14 | Dec 13 | Dec 12 | Dec 11 | Dec 10 | Dec 9 | Dec 8 | Dec 7 | Dec 6 | Dec 5 | Dec 4 | Dec 3 | Dec 2 | Dec 1 | Nov 30 | Nov 29 | Nov 28 | Nov 27 | Nov 26 | Nov 25 | Nov 24 | Nov 23 | Nov 22 | Nov 21 | Nov 20 | Nov 19 | Nov 18 | Nov 17 | Nov 16 | Nov 15 | Nov 14 | Nov 13 | Nov 12 | Nov 11 | Nov 10 | Nov 9 | Nov 8 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Windows | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 1 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 1 | 0 | 1 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 2 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 2 | 0 | 0 |
Mac | 0 | 0 | 0 | 1 | 0 | 1 | 1 | 0 | 0 | 2 | 0 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 2 | 1 | 1 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 1 | 0 | 0 | 0 | 2 | 1 | 0 | 0 | 0 | 0 | 2 | 1 | 0 |
Linux | 0 | 0 | 0 | 2 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 2 | 0 | 0 | 0 | 1 | 0 | 2 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Readme
- Source
- raw.githubusercontent.com
README
Quick link ==> SublimeHaskell's Documentation
Setup
Required (Before You Install SublimeHaskell)
You will need to install either the GHC Haskell compiler and cabal
either stack
build tool and a backend before you install SublimeHaskell.
stack
will install ghc automatically, so there's no need to install GHC independently:- or you may install Haskell Platform (includes
cabal
build tool):- The Glorious Haskell Computer (ghc). Preferably, you should install the Haskell Platform if you don't already have a Haskell development and hacking environment set up.
- cabal. Under normal circumstances,
cabal
should come pre-installed with your Haskell environment, e.g., if you installed the Haskell Platform.
A backend. SublimeHaskell communicates with the backend to support the interesting editing features. The preferred backend is
hsdev
. You can use one of the deprecated backends, but know that support for these backends may be dropped or removed in a future SublimeHaskell release.hsdev cabal package for inspection, enhanced completion, goto, symbol info etc.
Installation:- with
cabal
—cabal install hsdev
- with
stack
— create config (for example,hsdev.yaml
) with contents:
packages: [] resolver: lts-13.29 extra-deps: - hsdev-0.3.3.1 - haddock-api-2.21.0 - hdocs-0.5.3.1 - network-3.0.1.1
And then run
stack install hsdev --stack-yaml hsdev.yaml
- with
Deprecated backends
ghc-mod (for import and LANGUAGE completions and type inference,
cabal install ghc-mod
, not used ifhsdev
enabled,ghc-mod
is used byhsdev
as a library)
Install SublimeHaskell
- Get Sublime Text: http://www.sublimetext.com/
- Install the Sublime Package Control package: http://wbond.net/sublime_packages/package_control/installation
- Use Package Control to install SublimeHaskell
Open a Haskell source file, cabal
builder file or a stack.yaml
builder and have a productive Haskell development session!
Optional Tools
- stack. The Haskell Tool Stack. If you installed the Haskell Platform, you already have this installed.
stack
is a companion Haskell build tool that supplementscabal
. - SublimeREPL package for REPL support, if you want to interact with GHCI from within SublimeText.
- Code prettifier:
- stylish-haskell (
cabal install stylish-haskell
) - hindent (
cabal install hindent
)
- stylish-haskell (
Tool Installation Location
Tools (cabal
, hsdev
, ghc-mod
, ghc
, etc.) are usually installed in a directory that is already added to your PATH
environment variable. SublimeHaskell will also look for these tools in several “Haskell standard” places. These places include:
Builder | *nix Platforms | Windows |
---|---|---|
stack | $HOME/.local/bin |
%APPDATA%/local/bin |
cabal user | $HOME/.cabal/bin |
%APPDATA/cabal/bin |
cabal global | /usr/local/bin |
%PROGRAMFILES%/Haskell/bin |
More advanced users can configure cabal
's user and global install paths in $HOME/.cabal/config
. SublimeHaskell will use these values if configured and if the directories to which they refer exist.
If you have a non-standard installation location for your tools, you can configure this in SublimeHaskell's “User Settings” by adjusting add_to_PATH
. You will have to restart SublimeText after you save your preferences.
SublimeHaskell Theme
There is a special theme with enhanced Haskell entities and marks (errors, warnings and hints) coloring. Note different coloring for types and constructors (in import list, data declaration etc.), special coloring of generic variables in types, pragmas and module imports
Quickstart
Open the SublimeText Command Palette (
Ctrl-Shift-P
orOption-Command-P
on OS X) and typehaskell
to explore SublimeHaskell's goodness.When editing Haskell source files, automatic error highlighting and enhanced auto-completion is available.
Each time you save, any errors in your program will be listed at the bottom of the window and highlighted in the source code.
All source files in the project are scanned on change. Any symbols that they export are provided in the auto-complete suggestions.
Stylish-haskell can be used to stylish file or selected text.
Use
F12
to go to declaration andctrl+k ctrl+i
to show symbol info with documentation. These commands are also available through context menu with right-click.To show inferred types use
Show type
(ctrl-k ctrl-h ctrl-t
) command.To insert inferred type use
Insert type
(ctrl-k ctrl-h ctrl-i
).You can jump between the errors and warnings with
alt+d alt+e
andalt+shift+d alt+shift+e
.To show hidden error output, use command
Show error panel
(ctrl-alt-e
)
Features and SublimeHaskell Goodness
Stack support
Build commands such as Build
, Clean
, Install
, Rebuild
uses stack
if there is stack.yaml
near .cabal
. If you don't want to use stack
, set haskell_build_tool
setting to cabal
.
hsdev
uses stack
to build dependencies and to get corresponding package-dbs. Since 0.1.7.2
it passes --compiler
and --arch
options to stack
to get package-dbs built with hsdev
-compatible compiler.
Enhanced completion
Works in export list (showing symbols in scope), import list, expressions. Completes after module qualifier (several modules can be import qualified as
with same qualifier). Takes into account module reexports for sources.
Popups
Show popup with symbol info and with error/warning/hint details. Requires SublimeText 3 dev build > 3116 (https://forum.sublimetext.com/t/dev-build-3116/21148).
It also shows inferred type when possible
You can select all usages of symbol via link
And you can autofix warnings/hints on popup for warnings/hints
Commands:
SublimeHaskell: Insert import for symbol
— add import for declarationSublimeHaskell: Find declarations
— find declarations in installed packages and in projectsSublimeHaskell: Search declarations everywhere
— search declarations in hayoo tooSublimeHaskell: Browse module
— get declarations for moduleSublimeHaskell: Browse declarations
— get declarations in scope of current fileSublimeHaskell: Show symbol info
— get help for symbol,ctrl+k ctrl+i
SublimeHaskell: Toggle symbol info panel
— toggle continuout symbol info panel, which show info about symbol under cursor. Useful when reading code.SublimeHaskell: Go to module
— go to module,ctrl+k ctrl+p
SublimeHaskell: Go to declaration
— overrides default,f12
Ctrl+R
,Ctrl+Shift+R
— overrides default, goto symbol and goto symbol in projectSublimeHaskell: Show type
— show type/types for current expression,ctrl-k ctrl-h ctrl-t
SublimeHaskell: Expand selection to Expression
— expand selection to expression,ctrl+shift+y
SublimeHaskell: Show/hide all types
— get all types and highlight while selection modifies,ctrl+t, h
SublimeHaskell: Insert type
— insert type for selected expression,ctrl-k ctrl-h ctrl-i
SublimeHaskell: Hayoo
— search in hayooSublimeHaskell: Auto fix
— auto fix some of warnings and/or errors (for now redundant imports and hlint hints)SublimeHaskell: Stylish
— stylish source withstylish-haskell
SublimeHaskell: Scan docs and infer types
— as long as scanning docs for sources and inferring types is long process, it's disabled by default, but this command can be used to scan docs and infer types for currently opened viewSublimeHaskell: Check & Lint
— check/lint/check & lint opened file. Enable optioncheck_lint_fly
to check & lint on idle, rescanning actual source, so that completions are updatedSublimeHaskell: Eval expression
— evaluate expression in context of current moduleSublimeHaskell: Expression type
— evaluate expression type in context of current module- Eval commands — see animation
SublimeHaskell: Eval selection
— eval selected expression, for example[1..10]
⤇[1,2,3,4,5,6,7,8,9,10]
replicate 10 'a'
⤇aaaaaaaaaa
(note no double quotes for string result)SublimeHaskell: Apply to selection
— same as above, but applies function to each selectionfoobar
⫤reverse
⤇raboof
[1..10]
⫤reverse
⤇[10,9,8,7,6,5,4,3,2,1]
1
,2
,3
⫤succ
⤇2
,3
,4
[1..3]
⫤intercalate ", " . map (\i -> "foo" ++ show i)
⤇foo1, foo2, foo3
SublimeHaskell: Apply to selection list
— applies function to list made from selectionsfoo
,bar
,baz
⫤reverse
⤇baz
,bar
,foo
foo
,bar
,baz
⫤sort
⤇bar
,baz
,foo
- Repl commands (uses SublimeREPL package)
SublimeHaskell Repl: GHCi
— runsghci
SublimeHaskell Repl: GHCi current file
— runsghci
and loads current fileSublimeHaskell Repl: Cabal Repl
— runscabal repl
for current projectSublimeHaskell Repl: Load
— loads current file or project in repl
- Context menu commands
Open package on Hackage
— works within symbol info panel, opens Hackage pageOpen module on Hackage
— words in symbol info panel and in sources, opens Hackage page for selected moduleShow symbol usages
— show list of locations where symbol is used
- Build commands
Build
,Typecheck build (no codegen)
,Clean
,Configure
,Rebuild
,Install
,Test
,Run
- Error commands:
SublimeHaskell: Go to next error
— go to next error in file,alt+d alt+e
SublimeHaskell: Go to previous error
— go to previous error in file,alt+shift+d alt+shift+e
SublimeHaskell: Show error panel
— show error panel if it was hidden,ctrl+alt+e
Inside and outside your project: codex
codex allows you to use ctags to jump to definitions that are declared in your cabal dependencies.
cabal install codex
- Run
codex set format sublime
, that updates your~/.codex
file to Sublime's Ctags plugin's format - Change
~/.codex
totagsFileName: .tags
- In your project,
codex cache clean && codex update
- You can now jump to the source code of definitions outside of your project.
- The commands
CTags: Show Symbols
andCTags: Rebuild Tags
currently don't work withcodex
Credits
Icons from FlatIcon.
Error icon by Eleonor Wang
Warning icon by Freepik
Hint icon by Gregor Cresnar
Wrench icon by Gregor Cresnar