Haskell IDE
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
appveyor Try using cabal new-build on AppVeyor Jul 1, 2018
bew Use gi-webkit2 Output pane has some TODOs Oct 15, 2016
data Add HaRe UI. Fix warnings. Performance fixes. Aug 19, 2018
docs Fix documentation message Nov 12, 2016
language-specs Use Aeson & attoparsec. Improved nix support. Apr 14, 2018
linux Fix GHC 8.4 support Jun 10, 2018
main Move YiConfig to a proper place Sep 2, 2016
osx macOS run script (does not load .profile etc.) Oct 1, 2017
pics Cache nix-shell environment variables Mar 4, 2018
po New version of the pt_BR translation file. Mar 30, 2013
scripts Update Windows installer scripts Sep 9, 2018
src/IDE Fix text align feature when candy mode is off Sep 20, 2018
tests Disable tests for now (need to use haskell-gi) Jan 15, 2017
travis Update travis Aug 14, 2017
vendor Relax aeson upper bound Sep 10, 2018
win32 Fix for windows installer build scripts Sep 16, 2018
xobl Update build scripts for xobl and macOS Jul 23, 2017
.dockerignore Vagrant file for Leksah, GHCJS and "GHC on Wine" May 31, 2015
.gitignore Prevent .ghc.environment files breaking ghcjs Sep 25, 2017
.gitmodules Fix windows build issue Sep 4, 2018
.travis.yml Reduce travis timeout leave time for cache write Aug 23, 2018
Contributing.md Fix hackage links to point to latest version Sep 4, 2016
Dockerfile Use newer Fedora and build webkitgtk3 with patch Apr 18, 2016
LICENSE preparing first beta Jan 20, 2009
LICENSE.rtf Use WiX to make an MSI file for the windows binaries Mar 1, 2014
Readme.md Gtk+ 3.18 or greater is now required Sep 9, 2018
Setup.lhs Adding flags for hgettext conditional compilation support. Mar 26, 2013
SetupLocale.lhs Adding flags for hgettext conditional compilation support. Mar 26, 2013
appveyor.yml Update Windows installer scripts Sep 9, 2018
cabal.project Relax aeson upper bound Sep 10, 2018
default-reflex.nix Update leksah-server submodule ref Feb 22, 2018
default.nix Fix warnings, update launch scripts and submodules Sep 9, 2018
leksah-nix.sh Fix warnings, update launch scripts and submodules Sep 9, 2018
leksah.bat Pass args from leksah.bat to leksah.sh Jul 7, 2018
leksah.cabal Relax aeson upper bound Sep 10, 2018
leksah.sh Fix warnings, update launch scripts and submodules Sep 9, 2018
sources.txt Switch to Gtk2Hs 0.13 and leksah-server 0.14 Jun 29, 2014
stack.yaml Update stack.yaml with latest versions Jul 1, 2018

Readme.md

Leksah, an Integrated Development Environment for Haskell

Build Status

Leksah aims to integrate various Haskell development tools to provide a practical and pleasant development environment. The user interface is a mix of GTK+ and WebKit based components.

Documentation can be found on leksah.org.

Leksah's Nix Support

Nix is great and we have added some features to make it easier to use Nix projects with Leksah.

If your project has a default.nix file along side it (in the same directory as your cabal.project file), leksah can use nix-shell -A shells.ghc to make a cached environment for running ghc and ghci. Click on the Nix button on the toolbar to set this up for the active project (if the ghcjs build button is active it will also build a cached environment for nix-shell -A shells.ghc).

If you change your default.nix file click the Nix button again to refresh the cached environment. Caching the environment in this way makes calls to cabal new-build faster (avoiding the startup overhead of nix-shell).

A great way to set up a suitable default.nix for your project is described in project-development.md. This works even if you are not planning on using reflex in your project.

Getting Leksah

Nix (Recommended for Linux and macOS users)

Install Nix.

Then download, build and run Leksah with:

git clone --recursive https://github.com/leksah/leksah.git
cd leksah
./leksah-nix.sh ghc843

On macOS the Leksah window start below other active application windows you can use Command+Shift+Tab to bring it to the top (issue 461).

The ghc843 argument indicates Leksah should be built using GHC 8.4.3. Leksah works best if it is built with the same version of GHC that your projects use. To work on a project that uses GHC 8.2.2, just exit leksah and run ./leksah-nix.sh ghc822.

Chocolatey and MSYS2 (Recommended for Windows users)

Install Chocolatey.

Right click on Command Prompt and choose Run as Administrator. In the window run:

choco install ghc --version 8.2.2
choco install msys2

Close the Command Prompt window and open a new one (not as administrator). This time run:

git clone --recursive https://github.com/leksah/leksah.git
cd leksah
leksah.bat

Alternative Installation Method

Leksah requires ghc --version >=8.0.2 and cabal --version >=1.24. To get them go to haskell.og/download and choose the Minimal GHC or Haskell Platform.

Step 1: Install C libraries

Fedora
sudo dnf install gobject-introspection-devel webkitgtk4-devel gtksourceview3-devel
Ubuntu/Debian
sudo apt-get install libgirepository1.0-dev libwebkit2gtk-4.0-dev libgtksourceview-3.0-dev
Arch Linux
sudo pacman -S gobject-introspection gobject-introspection-runtime gtksourceview3 webkit2gtk
macOS with MacPorts
sudo port install gobject-introspection webkit2-gtk gtksourceview3 gtk-osx-application-gtk3 adwaita-icon-theme`

You will also need to build a MacPorts compatible of GHC. First install GHC some other way then unpack the source for the GHC version you want to use and run:

sudo port install libxslt gmp ncurses libiconv llvm-3.5 libffi
./configure --prefix=$HOME/ghc-8.0.1 --with-iconv-includes=/opt/local/include --with-iconv-libraries=/opt/local/lib --with-gmp-includes=/opt/local/include --with-gmp-libraries=/opt/local/lib --with-system-libffi --with-ffi-includes=/opt/local/lib/libffi-3.2.1/include --with-ffi-libraries=/opt/local/lib --with-nm=/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/nm-classic
make
make install
echo 'PATH: '"$PATH"

Make sure the $HOME/ghc-8.0.1/bin is present in PATH.

macOS with Homebrew

It might be possible to build Leksah using Homebrew now we have switched to WebKit 2. If you can figure it out please send us the details or better yet a pull request to update this file. Raise an issue if you try and it does not work.

FreeBSD
pkg install devel/gobject-introspection x11-toolkits/gtksourceview3 www/webkit2-gtk3

Step 2: Clone repository and its submodules

git clone --recursive https://github.com/leksah/leksah.git
cd leksah

Step 3.a: Build - cabal new-build variant

Step 3.a.1: Install extra tools
cabal update
cabal install alex happy
cabal install haskell-gi

Make sure ~/.cabal/bin is present in the PATH (Windows: Make sure %APPDATA%\cabal\bin is present in the PATH).

Step 3.a.2: Build and run Leksah
macOS using MacPorts
XDG_DATA_DIRS=/opt/local/share ./leksah.sh
Other OS
./leksah.sh

Step 3.b: Build - stack variant

Step 3.b.1: Install extra tools
stack setup --upgrade-cabal
stack install alex happy
stack install haskell-gi
stack install gtk2hs-buildtools

Leksah needs cabal for the metadate feature to work correctly (even when using stack):

stack install cabal-install
cabal update
Step 3.b.2: Build and run Leksah
macOS using MacPorts
XDG_DATA_DIRS=/opt/local/share stack install
stack exec --no-ghc-package-path leksah
Other OS with Gtk+ 3.20 (or newer)
stack install
stack exec --no-ghc-package-path leksah
Other OS with Gtk+ 3.18 (e.g. Ubuntu 16.04)
stack install --flag ltk:-gtk-320 --flag leksah:-gtk-320
stack exec --no-ghc-package-path leksah