leksah 0.14.4.0 → 0.15.0.1
raw patch · 31 files changed
+620/−258 lines, 31 filesdep ~Cabaldep ~QuickCheckdep ~basePVP ok
version bump matches the API change (PVP)
Dependency ranges changed: Cabal, QuickCheck, base, deepseq, filepath, ghc, gtk3, leksah, leksah-server, ltk, time, utf8-string
API changes (from Hackage documentation)
+ IDE.Build: MoTest :: MakeOp
+ IDE.Core.Types: serverQueue :: IDE -> Maybe (MVar (ServerCommand, ServerAnswer -> IDEM ()))
- IDE.Core.Types: IDE :: FrameState IDEM -> [PaneName] -> SpecialKeyTable IDERef -> SpecialKeyCons IDERef -> CandyTable -> Prefs -> Maybe Workspace -> Maybe IDEPackage -> Maybe Text -> Map FilePath [IDEPackage] -> [LogRef] -> (Maybe LogRef, Maybe LogRef, Maybe LogRef) -> Int -> (Maybe GenScope) -> (Maybe (GenScope, GenScope)) -> (Maybe (GenScope, GenScope)) -> PackageDescrCache -> Map Text [(Unique, IDEEvent -> IDEM IDEEvent)] -> IDEState -> (Bool, [GUIHistory], Int) -> (Bool, Maybe (Toolbar, ListStore Text)) -> (Bool, Maybe Toolbar) -> [FilePath] -> [FilePath] -> Maybe ProcessHandle -> Maybe (IDEPackage, ToolState) -> ((Int, Int), Maybe CompletionWindow) -> Control -> Maybe Handle -> (Map FilePath MenuItem, Maybe (Maybe Text)) -> Map Text LogLaunchData -> IDEAction -> Maybe Text -> IDE
+ IDE.Core.Types: IDE :: FrameState IDEM -> [PaneName] -> SpecialKeyTable IDERef -> SpecialKeyCons IDERef -> CandyTable -> Prefs -> Maybe Workspace -> Maybe IDEPackage -> Maybe Text -> Map FilePath [IDEPackage] -> [LogRef] -> (Maybe LogRef, Maybe LogRef, Maybe LogRef) -> Int -> (Maybe GenScope) -> (Maybe (GenScope, GenScope)) -> (Maybe (GenScope, GenScope)) -> PackageDescrCache -> Map Text [(Unique, IDEEvent -> IDEM IDEEvent)] -> IDEState -> (Bool, [GUIHistory], Int) -> (Bool, Maybe (Toolbar, ListStore Text)) -> (Bool, Maybe Toolbar) -> [FilePath] -> [FilePath] -> Maybe ProcessHandle -> Maybe (IDEPackage, ToolState) -> ((Int, Int), Maybe CompletionWindow) -> Control -> Maybe (MVar (ServerCommand, ServerAnswer -> IDEM ())) -> Maybe Handle -> (Map FilePath MenuItem, Maybe (Maybe Text)) -> Map Text LogLaunchData -> IDEAction -> Maybe Text -> IDE
- IDE.Package: buildPackage :: Bool -> Bool -> Bool -> Bool -> IDEPackage -> (Bool -> IDEAction) -> IDEAction
+ IDE.Package: buildPackage :: Bool -> Bool -> Bool -> IDEPackage -> (Bool -> IDEAction) -> IDEAction
- IDE.Utils.ServerConnection: doServerCommand :: ServerCommand -> (ServerAnswer -> IDEM alpha) -> IDEAction
+ IDE.Utils.ServerConnection: doServerCommand :: ServerCommand -> (ServerAnswer -> IDEM ()) -> IDEAction
Files
- Readme.md +101/−17
- data/prefs.lkshp +2/−2
- data/prefscoll.lkshp +1/−1
- data/styles/leksah-dark.xml +1/−1
- data/styles/leksah.xml +1/−1
- language-specs/cabal.lang +59/−0
- leksah.cabal +18/−22
- osx/Info.plist +3/−3
- osx/leksah.bundle +1/−0
- scripts/stage.sh +8/−8
- src/IDE/BufferMode.hs +2/−2
- src/IDE/Build.hs +4/−1
- src/IDE/Core/State.hs +1/−1
- src/IDE/Core/Types.hs +2/−0
- src/IDE/Leksah.hs +19/−3
- src/IDE/LogRef.hs +49/−17
- src/IDE/Package.hs +12/−14
- src/IDE/Pane/Info.hs +1/−1
- src/IDE/Pane/Modules.hs +0/−1
- src/IDE/Pane/PackageEditor.hs +140/−8
- src/IDE/Pane/PackageFlags.hs +0/−1
- src/IDE/Pane/Preferences.hs +5/−4
- src/IDE/Pane/SourceBuffer.hs +1/−2
- src/IDE/Pane/WebKit/Inspect.hs +2/−2
- src/IDE/Pane/WebKit/Output.hs +1/−1
- src/IDE/Session.hs +5/−5
- src/IDE/Utils/GUIUtils.hs +3/−5
- src/IDE/Utils/ServerConnection.hs +33/−11
- src/IDE/Workspaces.hs +1/−2
- tests/Tests.hs +2/−2
- win32/makeinstaller.sh +142/−120
Readme.md view
@@ -2,34 +2,118 @@ [](http://travis-ci.org/leksah/leksah) -This is [Leksah](http://leksah.org/), a hopefully practical tool to support the Haskell development process.--Leksah uses GTK+ as GUI Toolkit with the gtk2hs binding. It is plattform independent-and should run on any plattform where GTK+, gtk2hs and ghc can be installed.-It has currently been tested on Linux, Mac OS X and Windows. It uses the Cabal package management-and build system for Package Management. It currently only supports the Glasgow Haskell Compiler (ghc).+[Leksah](http://leksah.org/) aims to integrate various Haskell development+tools to provide a practical and plesant development environment.+The user interface is a mix of GTK+ and WebKit based components. Documentation can be found on [leksah.org](http://leksah.org/). -## System Requirements+## Installation -Leksah currently requires:+You can get Leksah up and running quickly on Windows and OS X using the+[official binaries](https://github.com/leksah/leksah/wiki/download). -* GHC-* gtk2hs-* For more details see the leksah.cabal file+Some Linux distributions include Leksah packages, but building from source+on Linux is normally relatively easy. -To build the latest development version of Leksah follow the-steps in the [.travis.yml](.travis.yml) file.+## Building From Source -If you are a user and would simply like to test Leksah, we would highly appreciate your feedback.+### Building on Linux -Please send questions and suggestions to-the [Leksah group](https://groups.google.com/forum/#!forum/leksah)+Install the GtkSourceView and WebKitGtk development packages for your distribution: -Thank you!+ sudo apt-get install libgtksourceview-3.0-dev libwebkitgtk-3.0-dev +Make sure `$HOME/.cabal/bin` is in your `PATH` then:+ + cabal update+ cabal install Cabal cabal-install+ cabal install alex happy + cabal install gtk2hs-buildtools+ cabal install leksah+ leksah +### Buildling on OS X +[Install MacPorts](https://www.macports.org/install.php). +Make sure `/opt/local/bin` and `$HOME/Libraries/Haskell/bin` are in your `PATH`. +To avoid a dependency on X11 add the following to `/opt/local/etc/macports/variants.conf`:++ -x11 +no_x11 +quartz +gtk3++Use MacPorts to install `python27` and `rsync` (sometimes it stops to ask for these to be+activated so if you do them first it might help):++ sudo port install python27 rsync++Use MacPorts to install GHC and the C libraries needed by Leksah (this will take a long time):+ + sudo port install ghc gtk3 webkit-gtk3 gtksourceview3 gtk-osx-application adwaita-icon-theme++Update Cabal and cabal-install++ cabal update+ cabal install Cabal cabal-install++Make sure the right `cabal` made it into your `PATH`.++ cabal --version++Check that the versions match the ones you just installed (if not check the symbolic links in+`$HOME/Libraries/Haskell/bin`).++Install `gtk2hs-buildtools` and `leksah`:++ cabal install alex happy + cabal install gtk2hs-buildtools+ cabal install leksah+ leksah++### Building on Windows++Install [GHC](https://www.haskell.org/downloads/windows).++Update MinGW if necessary. The GHC installers currently come with old versions of+MinGW and you will probably need to replace it with one that comes with gcc 4.8.1.+The current 64bit GHC installer seems to be happy to work with newer MinGW.+It may not be possible to use the current 32bit GHC installers at all.+Make sure you replace MinGW so that GHC will find the new one (just adding+it to the `PATH` will not work). The MinGW used by GHC is typically in a location+like `C:\Program Files\MinGHC-7.10.1\ghc-7.10.1\mingw`. Move it out of the way+and put a newer one in its place.++[MinGW version used to build the Leksah binaries](http://sourceforge.net/projects/mingw-w64/files/Toolchains%20targetting%20Win64/Personal%20Builds/mingw-builds/4.9.2/threads-posix/seh/x86_64-4.9.2-release-posix-seh-rt_v4-rev2.7z)++Install the C libraries needed by Leksah. The easiest way to do this is to install+Leksah using the MSI files. They include pkg-config and all the C libraries needed.++Make sure `C:\Leksah\bin` and `%APPDATA%\cabal\bin` are in your `PATH` and build:++ cabal update+ cabal install Cabal+ cabal install alex happy + cabal install gtk2hs-buildtools+ cabal install leksah+ leksah+ +### Building Leksah for Windows using Docker++It may seem crazy, but this is currently the best way to bootstrap Leksah for+Windows from source. This is mostly because Fedora and SUSE have a much+more complete set of MinGW packages than any thing else (including Windows).++Get the leksah source:++ git clone https://github.org/leksah/leksah+ cd leksah+ git submodule update --init++Build it using the Dockerfile:++ sudo docker build -t leksah/build .++Copy the resulting msi file out of the container (version number in the file name will match the one in the leksah.cabal file):++ sudo docker run --rm --volume $HOME/output:/output leksah/build cp /leksah/win32/leksah-0.15.0.1-ghc-7.10.1.msi /output
data/prefs.lkshp view
@@ -46,7 +46,7 @@ Paths under which haskell sources for packages may be found: [] Unpack source for cabal packages to:- Just "~/.leksah-0.14/packageSources"+ Just "~/.leksah-0.15/packageSources" URL from which to download prebuilt metadata: "http://www.leksah.org" Strategy for downloading prebuilt metadata:@@ -60,7 +60,7 @@ Stop the leksah-server process when leksah disconnects: True Packages which are excluded from the modules pane:- [Dependency (PackageName "ghc") AnyVersion]+ ["ghc -any"] Automatically save all files before building: True Background build:
data/prefscoll.lkshp view
@@ -1,7 +1,7 @@ Paths under which haskell sources for packages may be found: [] Unpack source for cabal packages to:- Just "~/.leksah-0.14/packageSources"+ Just "~/.leksah-0.15/packageSources" URL from which to download prebuilt metadata: "http://www.leksah.org" Strategy for downloading prebuilt metadata:
data/styles/leksah-dark.xml view
@@ -75,7 +75,7 @@ <style name="def:error" background="red" bold="true"/> <style name="def:warning" background="yellow"/> <style name="def:note" foreground="comment" background="yellow" bold="true"/>- <style name="def:underlined" italic="true" underline="true"/>+ <style name="def:underlined" italic="true" underline="false"/> <!-- Language specific styles --> <style name="diff:added-line" foreground="#008B8B"/>
data/styles/leksah.xml view
@@ -75,7 +75,7 @@ <style name="def:error" background="red" bold="true"/> <style name="def:warning" background="yellow"/> <style name="def:note" foreground="comment" background="yellow" bold="true"/>- <style name="def:underlined" italic="true" underline="true"/>+ <style name="def:underlined" italic="true" underline="false"/> <!-- Language specific styles --> <style name="diff:added-line" foreground="#008B8B"/>
language-specs/cabal.lang view
@@ -53,6 +53,7 @@ <keyword>build-type</keyword> <keyword>license</keyword> <keyword>license-file</keyword>+ <keyword>license-files</keyword> <keyword>copyright</keyword> <keyword>maintainer</keyword> <keyword>build-depends</keyword>@@ -95,6 +96,7 @@ <context ref="lib"/> <context ref="exe"/> <context ref="test"/>+ <context ref="benchmark"/> <context ref="custom"/> </include> </context>@@ -119,6 +121,7 @@ <context ref="lib"/> <context ref="exe"/> <context ref="test"/>+ <context ref="benchmark"/> <context ref="custom"/> </include> </context>@@ -168,6 +171,7 @@ <context ref="flag"/> <context ref="exe"/> <context ref="test"/>+ <context ref="benchmark"/> <context ref="conditional"/> <context ref="custom"/> </include>@@ -219,6 +223,7 @@ <context ref="lib"/> <context ref="exe"/> <context ref="test"/>+ <context ref="benchmark"/> <context ref="conditional"/> <context ref="custom"/> </include>@@ -271,11 +276,64 @@ <context ref="lib"/> <context ref="exe"/> <context ref="test"/>+ <context ref="benchmark"/> <context ref="conditional"/> <context ref="custom"/> </include> </context> + <context id="benchmark-field-name" style-ref="field-name">+ <prefix>^ +</prefix>+ <suffix>:</suffix>+ <keyword>build-depends</keyword>+ <!-- putStrLn $ concatMap (\f -> " <keyword>" ++ fieldName f ++ "</keyword>\n") testSuiteFieldDescrs -->+ <keyword>type</keyword>+ <keyword>main-is</keyword>+ <keyword>buildable</keyword>+ <keyword>build-tools</keyword>+ <keyword>cpp-options</keyword>+ <keyword>cc-options</keyword>+ <keyword>ld-options</keyword>+ <keyword>pkgconfig-depends</keyword>+ <keyword>frameworks</keyword>+ <keyword>c-sources</keyword>+ <keyword>default-language</keyword>+ <keyword>other-languages</keyword>+ <keyword>default-extensions</keyword>+ <keyword>other-extensions</keyword>+ <keyword>extensions</keyword>+ <keyword>extra-libraries</keyword>+ <keyword>extra-lib-dirs</keyword>+ <keyword>includes</keyword>+ <keyword>install-includes</keyword>+ <keyword>include-dirs</keyword>+ <keyword>hs-source-dirs</keyword>+ <keyword>other-modules</keyword>+ <keyword>ghc-prof-options</keyword>+ <keyword>ghc-shared-options</keyword>+ <keyword>ghc-options</keyword>+ <keyword>hugs-options</keyword>+ <keyword>nhc98-options</keyword>+ <keyword>jhc-options</keyword>+ </context>++ <context id="benchmark" end-parent="true">+ <start>^(benchmark) </start>+ <include>+ <context sub-pattern="1" where="start" style-ref="keyword"/>+ <context ref="line-comment"/>+ <context ref="benchmark-field-name"/>+ <context ref="source-repo"/>+ <context ref="flag"/>+ <context ref="lib"/>+ <context ref="exe"/>+ <context ref="test"/>+ <context ref="benchmark"/>+ <context ref="conditional"/>+ <context ref="custom"/>+ </include>+ </context>+ <context id="line-comment" style-ref="comment" end-at-line-end="true"> <start>--</start> <include>@@ -292,6 +350,7 @@ <context ref="lib"/> <context ref="exe"/> <context ref="test"/>+ <context ref="benchmark"/> <context ref="custom"/> </include> </context>
leksah.cabal view
@@ -1,5 +1,5 @@ name: leksah-version: 0.14.4.0+version: 0.15.0.1 cabal-version: >=1.18 build-type: Simple license: GPL@@ -221,9 +221,6 @@ build-depends: dyre >= 0.8.3 && <0.9 cpp-options: -DLEKSAH_WITH_YI_DYRE - if flag(threaded)- ghc-options: -threaded- if flag(gtk3) build-depends: gtk3 >=0.13.2 && <0.14, gtksourceview3 >=0.13.1.0 && <0.14 cpp-options: -DMIN_VERSION_gtk=MIN_VERSION_gtk3@@ -250,19 +247,19 @@ hs-source-dirs: src default-language: Haskell98 - build-depends: Cabal >=1.10.2.0 && <1.22, base >=4.0.0.0 && <4.8, binary >=0.5.0.0 && <0.8,+ build-depends: Cabal >=1.10.2.0 && <1.23, base >=4.0.0.0 && <4.9, binary >=0.5.0.0 && <0.8, bytestring >=0.9.0.1 && <0.11, containers >=0.2.0.0 && <0.6, directory >=1.0.0.2 && <3.1,- filepath >=1.1.0.1 && <1.4, glib >=0.13.0.0 && <0.14,+ filepath >=1.1.0.1 && <1.5, glib >=0.13.0.0 && <0.14, mtl >=1.1.0.2 && <2.3, old-time >=1.0.0.1 && <1.2, parsec >=2.1.0.1 && <3.2, pretty >=1.0.1.0 && <1.2,- regex-tdfa >=1.1 && <1.3, regex-tdfa-text, regex-base ==0.93.*, utf8-string >=0.3.1.1 && <0.4, array >=0.2.0.0 && <0.6,- time >=0.1 && <1.5, ltk >= 0.14.3.0 && <0.15, binary-shared >= 0.8 && <0.9, deepseq >= 1.1.0.0 && <1.4,- hslogger >= 1.0.7 && <1.3, leksah-server >=0.14.3.1 && <0.15,- ghc >=6.10.1 && <7.9, strict >= 0.3.2 && <0.4, conduit >= 1.0.8 && <1.3, text >= 0.11.1.5 && < 1.3,+ regex-tdfa >=1.1 && <1.3, regex-tdfa-text, regex-base ==0.93.*, utf8-string >=0.3.1.1 && <1.1, array >=0.2.0.0 && <0.6,+ time >=0.1 && <1.6, ltk >= 0.15.0.1 && <0.16, binary-shared >= 0.8 && <0.9, deepseq >= 1.1.0.0 && <1.5,+ hslogger >= 1.0.7 && <1.3, leksah-server >=0.15.0.1 && <0.16,+ ghc >=6.10.1 && <7.11, strict >= 0.3.2 && <0.4, conduit >= 1.0.8 && <1.3, text >= 0.11.1.5 && < 1.3, gio >=0.13.0.0 && <0.14, transformers >=0.2.2.0 && <0.5, executable-path >=0.0.3 && <0.1, vcsgui >=0.1.0 && < 0.2, vcswrapper >=0.1.0 && < 0.2,- QuickCheck >=2.4.2 && <2.8, haskell-src-exts >=1.13.5 && <1.17,+ QuickCheck >=2.4.2 && <2.9, haskell-src-exts >=1.13.5 && <1.17, hlint >=1.8.59 && <1.10, vado >=0.0.1 && <0.1, shakespeare >=2.0.0.1 && <2.1 exposed-modules: IDE.Leksah IDE.Completion IDE.ImportTool IDE.Find IDE.Sandbox IDE.Session IDE.Command IDE.Keymap IDE.Utils.GUIUtils@@ -290,10 +287,7 @@ build-depends: binary-shared >=0.8.2 other-modules: Paths_leksah-- ghc-prof-options: -auto-all -prof- ghc-shared-options: -auto-all- ghc-options: -O2 -fwarn-missing-fields -fwarn-incomplete-patterns -ferror-spans+ ghc-options: -fwarn-missing-fields -fwarn-incomplete-patterns -ferror-spans Executable leksah if os(windows)@@ -310,7 +304,11 @@ ghc-options: -threaded hs-source-dirs: main- build-depends: leksah == 0.14.4.0, base >= 4.0.0.0 && <=4.8, gtk3 -any+ build-depends: leksah == 0.15.0.1, base >= 4.0.0.0 && <=4.9+ if flag(gtk3)+ build-depends: gtk3 >=0.13.2 && <0.14+ else+ build-depends: gtk >=0.13.2 && <0.14 if os(linux) && flag(loc) cpp-options: -DLOCALIZATION build-depends: hgettext, setlocale@@ -321,12 +319,10 @@ default-language: Haskell98 main-is: Main.hs buildable: True- ghc-prof-options: -auto-all -prof- ghc-shared-options: -auto-all- ghc-options: -rtsopts -O2 -fwarn-missing-fields -fwarn-incomplete-patterns -ferror-spans+ ghc-options: -rtsopts -fwarn-missing-fields -fwarn-incomplete-patterns -ferror-spans executable bewleksah- build-depends: leksah ==0.14.4.0, base >=4.0.0.0 && <=4.8,+ build-depends: leksah ==0.15.0.1, base >=4.0.0.0 && <=4.9, jsaddle -any, ghcjs-dom -any if flag(gtk3) build-depends: gtk3 >=0.13.2 && <0.14, gtksourceview3 >=0.13.1.0 && <0.14,@@ -342,8 +338,8 @@ hs-source-dirs: bew test-suite tests- build-depends: base >=4.0.0.0 && <4.8, Cabal >=1.10.2.0 && <1.22,- QuickCheck >=2.4.2 && <2.8, leksah ==0.14.4.0,+ build-depends: base >=4.0.0.0 && <4.9, Cabal >=1.10.2.0 && <1.23,+ QuickCheck >=2.4.2 && <2.9, leksah ==0.15.0.1, containers, ltk, leksah-server, hslogger, transformers, glib, monad-loops, text if flag(gtk3)
osx/Info.plist view
@@ -7,7 +7,7 @@ <key>CFBundleExecutable</key> <string>Leksah</string> <key>CFBundleGetInfoString</key>- <string>0.14.0.0</string>+ <string>0.15.0.0</string> <key>CFBundleIconFile</key> <string>leksah.icns</string> <key>CFBundleIdentifier</key>@@ -17,11 +17,11 @@ <key>CFBundlePackageType</key> <string>APPL</string> <key>CFBundleShortVersionString</key>- <string>0.14.0.0</string>+ <string>0.15.0.0</string> <key>CFBundleSignature</key> <string>????</string> <key>CFBundleVersion</key>- <string>0.14.0.0</string>+ <string>0.15.0.0</string> <key>NSHumanReadableCopyright</key> <string>2007-2011 Jürgen Nicklisch-Franken, GNU General Public License.</string> <key>LSMinimumSystemVersion</key>
osx/leksah.bundle view
@@ -60,6 +60,7 @@ <main-binary>${prefix:leksah-bin}/bin/leksah</main-binary> <binary>${prefix:leksah-server-bin}/bin/leksahecho</binary>+ <binary>${prefix:leksah-server-bin}/bin/leksahtrue</binary> <binary>${prefix:leksah-server-bin}/bin/leksah-server</binary> <binary>${prefix:vcsgui-bin}/bin/vcsgui</binary> <binary>${prefix:vcsgui-bin}/bin/vcsgui-askpass</binary>
scripts/stage.sh view
@@ -1,18 +1,18 @@ #!/bin/sh -ghc-pkg$GHCVERSION unregister leksah || true-ghc-pkg$GHCVERSION unregister leksah-server || true-ghc-pkg$GHCVERSION unregister ltk || true+$WINE ghc-pkg$GHCVERSION unregister leksah || true+$WINE ghc-pkg$GHCVERSION unregister leksah-server || true+$WINE ghc-pkg$GHCVERSION unregister ltk || true export FULL_VERSION=`grep '^version: ' leksah.cabal | sed 's|version: ||' | tr -d '\r'` export SHORT_VERSION=`echo $FULL_VERSION | sed 's|\.[0-9]*\.[0-9]*$||'` export LEKSAH_X_X_X_X=leksah-$FULL_VERSION export LEKSAH_X_X=leksah-$SHORT_VERSION -export GHC_VER=`ghc$GHCVERSION --numeric-version`+export GHC_VER=`$WINE ghc$GHCVERSION --numeric-version | tr -d '\r'` export LEKSAH_X_X_X_X_GHC_X_X_X=leksah-$FULL_VERSION-ghc-$GHC_VER -export GTK_PREFIX=`pkg-config --libs-only-L gtk+-3.0 | sed 's|^-L||' | sed 's|/lib *.*$||'`+export GTK_PREFIX=`$WINE pkg-config --libs-only-L gtk+-3.0 | sed 's|^-L||' | sed 's|/lib *.*$||'` echo Staging Leksah in $GTK_PREFIX @@ -36,11 +36,11 @@ cabal install --enable-tests -j4 --with-ghc=ghc$GHCVERSION || exit cabal test || exit cd ../yi || exit- cabal install -j4 -fpango --with-ghc=ghc$GHCVERSION || exit+# cabal install -j4 -fpango --with-ghc=ghc$GHCVERSION || exit cd ../.. || exit- cabal install -j4 -fwebkit -fyi --with-gcc=gcc-mp-4.8 --with-ghc=ghc$GHCVERSION || exit+ cabal install -j4 -fwebkit -f-yi --with-ghc=ghc$GHCVERSION || exit else- cabal install ./ ./vendor/ltk ./vendor/leksah-server gtk3 ghcjs-dom jsaddle vendor/haskellVCSWrapper/vcswrapper vendor/haskellVCSGUI/vcsgui --with-ghc=ghc$GHCVERSION -j4 -fwebkit -f-yi -fpango -f-vty --force-reinstalls --extra-lib-dirs=/c/MinGWRPM/lib || bash || exit+ $WINE cabal install ./ ./vendor/ltk ./vendor/leksah-server gtk3 ghcjs-dom jsaddle vendor/haskellVCSWrapper/vcswrapper vendor/haskellVCSGUI/vcsgui --with-ghc=ghc$GHCVERSION -j4 -fwebkit -f-yi -fpango -f-vty --force-reinstalls || exit # if [ "$GHC_VER" != "7.0.3" ] && [ "$GHC_VER" != "7.0.4" ] && [ "$GHC_VER" != "7.6.1" ]; then # echo https://github.com/yi-editor/yi.git >> sources.txt # export LEKSAH_CONFIG_ARGS="$LEKSAH_CONFIG_ARGS -fyi -f-vty -f-dyre -fpango"
src/IDE/BufferMode.hs view
@@ -155,10 +155,10 @@ modeEditUncomment :: IDEAction, modeSelectedModuleName :: IDEM (Maybe Text), modeEditToCandy :: (Text -> Bool) -> IDEAction,- modeTransformToCandy :: TextEditor editor => (Text -> Bool) -> EditorBuffer editor -> IDEAction,+ modeTransformToCandy :: forall editor . TextEditor editor => (Text -> Bool) -> EditorBuffer editor -> IDEAction, modeEditFromCandy :: IDEAction, modeEditKeystrokeCandy :: Maybe Char -> (Text -> Bool) -> IDEAction,- modeEditInsertCode :: TextEditor editor => Text -> EditorIter editor -> EditorBuffer editor -> IDEAction,+ modeEditInsertCode :: forall editor . TextEditor editor => Text -> EditorIter editor -> EditorBuffer editor -> IDEAction, modeEditInCommentOrString :: Text -> Bool }
src/IDE/Build.hs view
@@ -80,6 +80,7 @@ data MakeOp = MoConfigure | MoBuild+ | MoTest | MoCopy | MoRegister | MoClean@@ -200,10 +201,12 @@ doBuildChain ms chain@Chain{mcAction = MoConfigure} = packageConfig' (mcEle chain) (constrCont ms (mcPos chain) (mcNeg chain)) doBuildChain ms chain@Chain{mcAction = MoBuild} =- buildPackage (msBackgroundBuild ms) (msRunUnitTests ms) (msJumpToWarnings ms) (not (msMakeMode ms) && msSingleBuildWithoutLinking ms)+ buildPackage (msBackgroundBuild ms) (msJumpToWarnings ms) (not (msMakeMode ms) && msSingleBuildWithoutLinking ms) (mcEle chain) (constrCont ms (mcPos chain) (mcNeg chain)) doBuildChain ms chain@Chain{mcAction = MoDocu} = packageDoc' (msBackgroundBuild ms) (msJumpToWarnings ms) (mcEle chain) (constrCont ms (mcPos chain) (mcNeg chain))+doBuildChain ms chain@Chain{mcAction = MoTest} =+ packageTest' (mcEle chain) False (constrCont ms (mcPos chain) (mcNeg chain)) doBuildChain ms chain@Chain{mcAction = MoCopy} = packageCopy' (mcEle chain) (constrCont ms (mcPos chain) (mcNeg chain)) doBuildChain ms chain@Chain{mcAction = MoRegister} =
src/IDE/Core/State.hs view
@@ -312,7 +312,7 @@ liftYi :: Yi.YiM a -> IDEM a liftYi = liftYiControl . Yi.liftYi -catchIDE :: Exception e => IDEM a -> (e -> IO a) -> IDEM a+catchIDE :: Exception e => IDEM a -> (e -> IO a) -> IDEM a catchIDE block handler = reifyIDE (\ideR -> catch (reflectIDE block ideR) handler) forkIDE :: IDEAction -> IDEAction
src/IDE/Core/Types.hs view
@@ -101,6 +101,7 @@ import Data.Map (Map(..)) import Data.Set (Set(..)) import Data.List (nubBy)+import Control.Concurrent (MVar) import Distribution.ModuleName (ModuleName(..)) import Graphics.UI.Gtk.Gdk.EventM (Modifier(..)) import Graphics.UI.Gtk.ActionMenuToolbar.UIManager(MergeId)@@ -169,6 +170,7 @@ , debugState :: Maybe (IDEPackage, ToolState) , completion :: ((Int, Int), Maybe CompletionWindow) , yiControl :: Yi.Control+, serverQueue :: Maybe (MVar (ServerCommand, (ServerAnswer -> IDEM ()))) , server :: Maybe Handle , vcsData :: (Map FilePath MenuItem, Maybe (Maybe Text)) -- menus for packages, password , logLaunches :: Map.Map Text LogLaunchData
src/IDE/Leksah.hs view
@@ -81,6 +81,10 @@ import qualified Data.Text as T (pack, unpack, stripPrefix) import Data.Text (Text) import Data.Monoid ((<>))+import Graphics.UI.Gtk.General.CssProvider+ (cssProviderLoadFromString, cssProviderNew)+import Graphics.UI.Gtk.General.StyleContext+ (styleContextAddProviderForScreen) -- -------------------------------------------------------------------- -- Command line options@@ -214,7 +218,18 @@ st <- unsafeInitGUIForThreadedRTS when rtsSupportsBoundThreads (sysMessage Normal "Linked with -threaded")- timeout <- timeoutAddFull (yield >> return True) priorityHigh 10+ timeout <- timeoutAddFull (yield >> return True) priorityLow 10+ mbScreen <- screenGetDefault+ case mbScreen of+ Just screen -> do+ provider <- cssProviderNew + cssProviderLoadFromString provider ( + ".window-frame,\n" <> + ".window-frame:backdrop {\n" <> + " box-shadow: none;\n" <> + " margin: 0;}\n" :: Text) + styleContextAddProviderForScreen screen provider 600+ Nothing -> debugM "leksah" "Unable to add style provider for screen" mapM_ (sysMessage Normal . T.pack) st initGtkRc dataDir <- getDataDir@@ -288,7 +303,7 @@ loop isIdle delay n = do quit <- if n > 0 then do- timeout <- timeoutAddFull (yield >> return True) priorityHigh 10+ timeout <- timeoutAddFull (yield >> return True) priorityLow 10 quit <- loopn (n+2) timeoutRemove timeout return quit@@ -319,7 +334,7 @@ startMainWindow :: Yi.Control -> FilePath -> Maybe FilePath -> [FilePath] -> Prefs -> Bool -> IO () startMainWindow yiControl sessionFP mbWorkspaceFP sourceFPs startupPrefs isFirstStart = do- timeout <- timeoutAddFull (yield >> return True) priorityHigh 10+ timeout <- timeoutAddFull (yield >> return True) priorityLow 10 debugM "leksah" "startMainWindow" osxApp <- OSX.applicationNew uiManager <- uiManagerNew@@ -376,6 +391,7 @@ , debugState = Nothing , completion = ((750,400),Nothing) , yiControl = yiControl+ , serverQueue = Nothing , server = Nothing , vcsData = (Map.empty, Nothing) , logLaunches = Map.empty
src/IDE/LogRef.hs view
@@ -70,7 +70,7 @@ import Data.Text (Text) import Control.Applicative ((<$>)) import qualified Data.Text as T- (stripPrefix, isPrefixOf, unpack, unlines, pack, null)+ (length, stripPrefix, isPrefixOf, unpack, unlines, pack, null) import Data.Monoid ((<>)) showSourceSpan :: LogRef -> Text@@ -306,8 +306,25 @@ char ':' col <- int return $ SrcSpan filePath line (fixColumn col) line (fixColumn col))- <?> "srcLocParser"+ <?> "srcSpanParser" +docTestParser :: CharParser () (SrcSpan, Text)+docTestParser = try (do+ symbol "###"+ whiteSpace+ symbol "Failure"+ whiteSpace+ symbol "in"+ whiteSpace+ file <- many (noneOf ":")+ char ':'+ line <- int+ char ':'+ whiteSpace+ text <- T.pack <$> many anyChar+ return ((SrcSpan file line 7 line (T.length text - 7)), "Failure in " <> text))+ <?> "docTestParser"+ data BuildError = BuildLine | EmptyLine | ErrorLine SrcSpan LogRefType Text@@ -470,9 +487,10 @@ -> Bool -> C.Sink ToolOutput IDEM [LogRef] logOutputForBuild package backgroundBuild jumpToWarnings = do+ liftIO $ putStrLn $ "logOutputForBuild" log <- lift getLog logLaunch <- lift $ Log.getDefaultLogLaunch- (_, _, errs) <- CL.foldM (readAndShow logLaunch) (log, False, [])+ (_, _, _, errs) <- CL.foldM (readAndShow logLaunch) (log, False, False, []) ideR <- lift ask liftIO $ postGUISync $ reflectIDE (do setErrorList $ reverse errs@@ -484,8 +502,8 @@ unless (backgroundBuild || (not jumpToWarnings && errorNum == 0)) nextError return errs) ideR where- readAndShow :: LogLaunch -> (IDELog, Bool, [LogRef]) -> ToolOutput -> IDEM (IDELog, Bool, [LogRef])- readAndShow logLaunch (log, inError, errs) output = do+ readAndShow :: LogLaunch -> (IDELog, Bool, Bool, [LogRef]) -> ToolOutput -> IDEM (IDELog, Bool, Bool, [LogRef])+ readAndShow logLaunch (log, inError, inDocTest, errs) output = do ideR <- ask liftIO $ postGUISync $ case output of ToolError line -> do@@ -506,34 +524,48 @@ case (parsed, errs) of (Left e,_) -> do sysMessage Normal . T.pack $ show e- return (log, False, errs)+ return (log, False, False, errs) (Right ne@(ErrorLine span refType str),_) ->- return (log, True, ((LogRef span package str (lineNr,lineNr) refType):errs))+ return (log, True, False, ((LogRef span package str (lineNr,lineNr) refType):errs)) (Right (OtherLine str1),(LogRef span rootPath str (l1,l2) refType):tl) -> if inError- then return (log, True, ((LogRef span+ then return (log, True, False, ((LogRef span rootPath (if T.null str then line else str <> "\n" <> line) (l1,lineNr) refType) : tl))- else return (log, False, errs)+ else return (log, False, False, errs) (Right (WarningLine str1),(LogRef span rootPath str (l1,l2) isError):tl) -> if inError- then return (log, True, ((LogRef span+ then return (log, True, False, ((LogRef span rootPath (if T.null str then line else str <> "\n" <> line) (l1,lineNr) WarningRef) : tl))- else return (log, False, errs)- otherwise -> return (log, False, errs)+ else return (log, False, False, errs)+ otherwise -> return (log, False, False, errs) ToolOutput line -> do- Log.appendLog log logLaunch (line <> "\n") LogTag- return (log, inError, errs)+ case (parse docTestParser "" $ T.unpack line, inDocTest, errs) of+ (Right (span, exp), _, _) -> do+ logLn <- Log.appendLog log logLaunch (line <> "\n") ErrorTag+ return (log, inError, True, LogRef span+ package+ exp+ (logLn,logLn) ErrorRef : errs)+ (_, True, (LogRef span rootPath str (l1,l2) refType):tl) -> do+ logLn <- Log.appendLog log logLaunch (line <> "\n") ErrorTag+ return (log, inError, inDocTest, LogRef span+ rootPath+ (str <> "\n" <> line)+ (l1,logLn) ErrorRef : tl)+ _ -> do+ Log.appendLog log logLaunch (line <> "\n") LogTag+ return (log, inError, False, errs) ToolInput line -> do Log.appendLog log logLaunch (line <> "\n") InputTag- return (log, inError, errs)+ return (log, inError, inDocTest, errs) ToolPrompt line -> do unless (T.null line) $ Log.appendLog log logLaunch (line <> "\n") LogTag >> return () let errorNum = length (filter isError errs)@@ -542,7 +574,7 @@ [] -> defaultLineLogger' log logLaunch output _ -> Log.appendLog log logLaunch (T.pack $ "- - - " ++ show errorNum ++ " errors - " ++ show warnNum ++ " warnings - - -\n") FrameTag- return (log, inError, errs)+ return (log, inError, inDocTest, errs) ToolExit _ -> do let errorNum = length (filter isError errs) let warnNum = length errs - errorNum@@ -550,7 +582,7 @@ [] -> defaultLineLogger' log logLaunch output _ -> Log.appendLog log logLaunch (T.pack $ "----- " ++ show errorNum ++ " errors -- " ++ show warnNum ++ " warnings -----\n") FrameTag- return (log, inError, errs)+ return (log, inError, inDocTest, errs) --logOutputLines :: Text -- ^ logLaunch
src/IDE/Package.hs view
@@ -94,7 +94,6 @@ import IDE.LogRef import Distribution.ModuleName (ModuleName(..)) import Data.List (isInfixOf, nub, foldl', delete)-import qualified System.IO.UTF8 as UTF8 (readFile) import IDE.Utils.Tool (ToolOutput(..), runTool, newGhci, ToolState(..), toolline) import qualified Data.Set as Set (fromList) import qualified Data.Map as Map (empty, fromList)@@ -199,16 +198,15 @@ continuation False return() -runCabalBuild :: Bool -> Bool -> Bool -> Bool -> IDEPackage -> Bool -> (Bool -> IDEAction) -> IDEAction-runCabalBuild backgroundBuild runTests jumpToWarnings withoutLinking package shallConfigure continuation = do+runCabalBuild :: Bool -> Bool -> Bool -> IDEPackage -> Bool -> (Bool -> IDEAction) -> IDEAction+runCabalBuild backgroundBuild jumpToWarnings withoutLinking package shallConfigure continuation = do prefs <- readIDE prefs let dir = ipdBuildDir package- let args = ([if runTests then "test" else "build"]+ let args = (["build"] ++ (if backgroundBuild && withoutLinking then ["--with-ld=false"] else [])- ++ ipdBuildFlags package- ++ (if runTests then ipdTestFlags package else []))+ ++ ipdBuildFlags package) runExternalTool' (__ "Building") (cabalCommand prefs) args dir $ do (mbLastOutput, isConfigErr, _) <- C.getZipSink $ (,,) <$> C.ZipSink sinkLast@@ -219,7 +217,7 @@ if shallConfigure && isConfigErr then packageConfig' package (\ b ->- when b $ runCabalBuild backgroundBuild runTests jumpToWarnings withoutLinking package False continuation)+ when b $ runCabalBuild backgroundBuild jumpToWarnings withoutLinking package False continuation) else do continuation (mbLastOutput == Just (ToolExit ExitSuccess)) return ()@@ -233,8 +231,8 @@ str2 = __ "please re-configure" str3 = __ "cannot satisfy -package-id" -buildPackage :: Bool -> Bool -> Bool -> Bool -> IDEPackage -> (Bool -> IDEAction) -> IDEAction-buildPackage backgroundBuild runTests jumpToWarnings withoutLinking package continuation = catchIDE (do+buildPackage :: Bool -> Bool -> Bool -> IDEPackage -> (Bool -> IDEAction) -> IDEAction+buildPackage backgroundBuild jumpToWarnings withoutLinking package continuation = catchIDE (do ideR <- ask prefs <- readIDE prefs maybeDebug <- readIDE debugState@@ -247,12 +245,12 @@ when (not backgroundBuild) $ liftIO $ do timeoutAddFull (do reflectIDE (do- buildPackage backgroundBuild runTests jumpToWarnings withoutLinking+ buildPackage backgroundBuild jumpToWarnings withoutLinking package continuation return False) ideR return False) priorityDefaultIdle 1000 return ()- else runCabalBuild backgroundBuild runTests jumpToWarnings withoutLinking package True $ \f -> do+ else runCabalBuild backgroundBuild jumpToWarnings withoutLinking package True $ \f -> do when f $ do mbURI <- readIDE autoURI case mbURI of@@ -451,7 +449,7 @@ packageConfig' packWithNewFlags $ \ ok -> when ok $ do packageRunJavaScript' False packWithNewFlags _ -> return ()- else liftIDE $ buildPackage False False True False package $ \ ok -> when ok $ liftIDE $ catchIDE (do+ else liftIDE $ buildPackage False False True package $ \ ok -> when ok $ liftIDE $ catchIDE (do ideR <- ask maybeDebug <- readIDE debugState pd <- liftIO $ readPackageDescription normal (ipdCabalFile package) >>= return . flattenPackageDescription@@ -516,7 +514,7 @@ catchIDE (do prefs <- readIDE prefs let dir = ipdBuildDir package- runExternalTool' (__ "Testing") (cabalCommand prefs) (["test"]+ runExternalTool' (__ "Testing") (cabalCommand prefs) (["test", "--with-ghc=leksahtrue"] ++ ipdBuildFlags package ++ ipdTestFlags package) dir $ do (mbLastOutput, isConfigErr, _) <- C.getZipSink $ (,,) <$> C.ZipSink sinkLast@@ -792,7 +790,7 @@ -- Lets build to make sure the binaries are up to date mbPackage <- readIDE activePack case mbPackage of- Just package -> runCabalBuild True False False False package True (\ _ -> return ())+ Just package -> runCabalBuild True False False package True (\ _ -> return ()) Nothing -> return () return () _ -> do
src/IDE/Pane/Info.hs view
@@ -48,7 +48,7 @@ scrolledWindowSetPolicy, castToWidget, ScrolledWindow) import Graphics.UI.Gtk.General.Enums (PolicyType(..)) import System.Glib.Signals (on)-import Control.Monad (unless, void, when)+import Control.Monad (unless, void) import Data.Foldable (forM_) import qualified Data.Text as T (unpack, pack, null) import Data.Monoid ((<>))
src/IDE/Pane/Modules.hs view
@@ -67,7 +67,6 @@ import Graphics.UI.Editor.Simple (textEditor, boolEditor, staticListEditor) import Graphics.UI.Editor.Composite (maybeEditor)-import qualified System.IO.UTF8 as UTF8 (writeFile) import IDE.Utils.GUIUtils (stockIdFromType, __) import IDE.Metainfo.Provider (getSystemInfo, getWorkspaceInfo, getPackageInfo)
src/IDE/Pane/PackageEditor.hs view
@@ -86,7 +86,7 @@ import Control.Event (EventSource(..)) import qualified Graphics.UI.Gtk.Gdk.Events as GTK (Event(..))-import Data.List (isPrefixOf, sort, nub)+import Data.List (isPrefixOf, sort, nub, sortBy) import Data.Text (Text) import Control.Monad.Trans.Reader (ask) import Control.Monad.IO.Class (MonadIO(..))@@ -521,9 +521,15 @@ else Benchmark (T.unpack s) fb (buildInfos !! bii) False) benchmarks' mbLib = case mbLib' of Nothing -> Nothing+#if MIN_VERSION_Cabal(1,22,0)+ Just (Library' mn rmn rs es b bii) -> if bii + 1 > length buildInfos+ then Just (Library mn rmn rs es b (buildInfos !! (length buildInfos - 1)))+ else Just (Library mn rmn rs es b (buildInfos !! bii))+#else Just (Library' mn b bii) -> if bii + 1 > length buildInfos then Just (Library mn b (buildInfos !! (length buildInfos - 1))) else Just (Library mn b (buildInfos !! bii))+#endif in pd { library = mbLib , executables = exes@@ -542,7 +548,11 @@ bis = exeBis ++ testBis ++ benchmarkBis (mbLib,bis2) = case library pd of Nothing -> (Nothing,bis)+#if MIN_VERSION_Cabal(1,22,0)+ Just (Library mn rmn rs es b bi) -> (Just (Library' (sort mn) rmn rs es b (length bis)), bis ++ [bi])+#else Just (Library mn b bi) -> (Just (Library' (sort mn) b (length bis)), bis ++ [bi])+#endif bis3 = if null bis2 then [emptyBuildInfo] else bis2@@ -800,10 +810,22 @@ -- (\ a b -> b{pd = (pd b){license = a}}) -- (comboSelectionEditor [GPL, LGPL, BSD3, BSD4, PublicDomain, AllRightsReserved, OtherLicense] show) , mkField+#if MIN_VERSION_Cabal(1,22,0)+ (paraName <<<- ParaName (__ "License Files")+ $ paraSynopsis <<<- ParaSynopsis+ (__ "A list of license files.")+ $ paraDirection <<<- ParaDirection Vertical+ $ paraMinSize <<<- ParaMinSize (-1,250)+ $ emptyParams)+ (licenseFiles . pd)+ (\ a b -> b{pd = (pd b){licenseFiles = a}})+ (filesEditor (Just fp) FileChooserActionOpen (__ "Select File"))+#else (paraName <<<- ParaName (__ "License File") $ emptyParams) (licenseFile . pd) (\ a b -> b{pd = (pd b){licenseFile = a}}) (fileEditor (Just fp) FileChooserActionOpen (__ "Select file"))+#endif , mkField (paraName <<<- ParaName (__ "Copyright") $ emptyParams) (copyright . pd)@@ -848,9 +870,9 @@ $ paraSynopsis <<<- ParaSynopsis (__ "Does this package depends on a specific version of Cabal?") $ paraShadow <<<- ParaShadow ShadowIn $ emptyParams)- (descCabalVersion . pd)- (\ a b -> b{pd = (pd b){specVersionRaw = Right a}})- versionRangeEditor+ (specVersion . pd)+ (\ a b -> b{pd = (pd b){specVersionRaw = Left a}})+ versionEditor , mkField (paraName <<<- ParaName (__ "Tested with compiler") $ paraShadow <<<- ParaShadow ShadowIn@@ -1035,9 +1057,23 @@ $ paraShadow <<<- ParaShadow ShadowIn $ emptyParams)) Nothing Nothing)+#if MIN_VERSION_Cabal(1,22,0) , mkField (paraName <<<- ParaName (__ "Additional options for GHC when built with profiling") $ emptyParams)+ (profOptions . (\a -> a !! i) . bis)+ (\ a b -> b{bis = update (bis b) i (\bi -> bi{profOptions = a})})+ compilerOptsEditor+ , mkField+ (paraName <<<- ParaName (__ "Additional options for GHC when the package is built as shared library")+ $ emptyParams)+ (sharedOptions . (\a -> a !! i) . bis)+ (\ a b -> b{bis = update (bis b) i (\bi -> bi{sharedOptions = a})})+ compilerOptsEditor+#else+ , mkField+ (paraName <<<- ParaName (__ "Additional options for GHC when built with profiling")+ $ emptyParams) (ghcProfOptions . (\a -> a !! i) . bis) (\ a b -> b{bis = update (bis b) i (\bi -> bi{ghcProfOptions = a})}) optsEditor@@ -1047,6 +1083,7 @@ (ghcSharedOptions . (\a -> a !! i) . bis) (\ a b -> b{bis = update (bis b) i (\bi -> bi{ghcSharedOptions = a})}) optsEditor+#endif ]), ((T.pack $ printf (__ "%s Extensions ") (show (i + 1))), VFD emptyParams [ mkField@@ -1200,6 +1237,34 @@ Just str -> return (Just (words str)) return (wid,oinj,oext) +compilerOptRecordEditor :: Editor (CompilerFlavor, [String])+compilerOptRecordEditor para noti = do+ pairEditor+ (compilerFlavorEditor+ , paraName <<<- ParaName "Compiler" $ emptyParams)+ (optsEditor,paraName <<<- ParaName "Options" $ emptyParams)+ (paraDirection <<<- ParaDirection Vertical $ para)+ noti++compilerOptsEditor :: Editor [(CompilerFlavor, [String])]+compilerOptsEditor p noti =+ multisetEditor+ (ColumnDescr True [("Compiler",\(compiler, _) -> [cellText := T.pack $ show compiler])+ ,("Options",\(_, opts ) -> [cellText := T.pack $ unwords opts])])+ (compilerOptRecordEditor,+ paraOuterAlignment <<<- ParaInnerAlignment (0.0, 0.5, 1.0, 1.0)+ $ paraInnerAlignment <<<- ParaOuterAlignment (0.0, 0.5, 1.0, 1.0)+ $ emptyParams)+ (Just (sortBy (\ (f1, _) (f2, _) -> compare f1 f2)))+ (Just (\ (f1, _) (f2, _) -> f1 == f2))+ (paraShadow <<<- ParaShadow ShadowIn+ $ paraOuterAlignment <<<- ParaInnerAlignment (0.0, 0.5, 1.0, 1.0)+ $ paraInnerAlignment <<<- ParaOuterAlignment (0.0, 0.5, 1.0, 1.0)+ $ paraDirection <<<- ParaDirection Vertical+ $ paraPack <<<- ParaPack PackGrow+ $ p)+ noti+ packageEditor :: Editor PackageIdentifier packageEditor para noti = do (wid,inj,ext) <- pairEditor@@ -1379,9 +1444,14 @@ -- ------------------------------------------------------------ data Library' = Library'{- exposedModules' :: [ModuleName]-, libExposed' :: Bool-, libBuildInfoIdx :: Int}+ exposedModules' :: [ModuleName]+#if MIN_VERSION_Cabal(1,22,0)+, reexportedModules' :: [ModuleReexport]+, requiredSignatures':: [ModuleName]+, exposedSignatures' :: [ModuleName]+#endif+, libExposed' :: Bool+, libBuildInfoIdx :: Int} deriving (Show, Eq) data Executable' = Executable'{@@ -1403,7 +1473,11 @@ deriving (Show, Eq) instance Default Library'+#if MIN_VERSION_Cabal(1,22,0)+ where getDefault = Library' [] [] [] [] getDefault getDefault+#else where getDefault = Library' [] getDefault getDefault+#endif instance Default Executable' where getDefault = Executable' getDefault getDefault getDefault@@ -1414,9 +1488,62 @@ instance Default Benchmark' where getDefault = Benchmark' getDefault (BenchmarkExeV10 (Version [1,0] []) getDefault) getDefault +#if MIN_VERSION_Cabal(1,22,0) libraryEditor :: Maybe FilePath -> [ModuleName] -> Int -> Editor Library' libraryEditor fp modules numBuildInfos para noti = do (wid,inj,ext) <-+ pairEditor+ (tupel3Editor+ (boolEditor,+ paraName <<<- ParaName (__ "Exposed")+ $ paraSynopsis <<<- ParaSynopsis (__ "Is the lib to be exposed by default?")+ $ emptyParams)+ (modulesEditor (sort modules),+ paraName <<<- ParaName (__ "Exposed Modules")+ $ paraMinSize <<<- ParaMinSize (-1,300)+ $ para)+ (buildInfoEditorP numBuildInfos, paraName <<<- ParaName (__ "Build Info")+ $ paraPack <<<- ParaPack PackNatural+ $ para),+ (paraDirection <<<- ParaDirection Vertical+ $ emptyParams))+ (tupel3Editor+ (modulesEditor (sort modules),+ paraName <<<- ParaName (__ "Reexported Modules")+ $ paraMinSize <<<- ParaMinSize (-1,300)+ $ para)+ (modulesEditor (sort modules),+ paraName <<<- ParaName (__ "Required Signatures")+ $ paraMinSize <<<- ParaMinSize (-1,300)+ $ para)+ (modulesEditor (sort modules),+ paraName <<<- ParaName (__ "Exposed Signatures")+ $ paraMinSize <<<- ParaMinSize (-1,300)+ $ para),+ (paraDirection <<<- ParaDirection Vertical+ $ emptyParams))+ (paraDirection <<<- ParaDirection Vertical+ $ emptyParams)+ noti+ let pinj (Library' em rmn rs es exp bi) = inj ((exp, map (T.pack . display) em,bi), (map (T.pack . display) rmn, map (T.pack . display) rs, map (T.pack . display) es))+ parseModuleNames = map (\s -> forceJust (simpleParse $ T.unpack s)+ "SpecialEditor >> libraryEditor: no parse for moduile name")+ parseRexportedModules = map (\s -> forceJust (simpleParse $ T.unpack s)+ "SpecialEditor >> libraryEditor: no parse for moduile name")+ pext = do+ mbp <- ext+ case mbp of+ Nothing -> return Nothing+ Just ((exp,em,bi), (rmn, rs, es)) -> return (Just $ Library'+ (parseModuleNames em)+ (parseRexportedModules rmn)+ (parseModuleNames rs)+ (parseModuleNames es) exp bi)+ return (wid,pinj,pext)+#else+libraryEditor :: Maybe FilePath -> [ModuleName] -> Int -> Editor Library'+libraryEditor fp modules numBuildInfos para noti = do+ (wid,inj,ext) <- tupel3Editor (boolEditor, paraName <<<- ParaName (__ "Exposed")@@ -1440,6 +1567,7 @@ Just (exp,em,bi) -> return (Just $ Library' (map (\s -> forceJust (simpleParse $ T.unpack s) "SpecialEditor >> libraryEditor: no parse for moduile name") em) exp bi) return (wid,pinj,pext)+#endif modulesEditor :: [ModuleName] -> Editor [Text] modulesEditor modules = staticListMultiEditor (map (T.pack . display) modules) id@@ -1591,7 +1719,11 @@ where getDefault = emptyBuildInfo instance Default Library- where getDefault = Library [] getDefault getDefault+ where getDefault = Library []+#if MIN_VERSION_Cabal(1,22,0)+ [] [] []+#endif+ getDefault getDefault instance Default Executable where getDefault = Executable getDefault getDefault getDefault
src/IDE/Pane/PackageFlags.hs view
@@ -45,7 +45,6 @@ FieldDescriptionPP(..), mkFieldPP) import Text.ParserCombinators.Parsec hiding(Parser)-import Debug.Trace (trace) import IDE.Utils.GUIUtils (__) import Control.Monad (void) import Data.Text (Text)
src/IDE/Pane/Preferences.hs view
@@ -71,7 +71,7 @@ import Control.Exception(SomeException,catch) import Prelude hiding(catch) import Data.List (isSuffixOf, sortBy)-import Data.Maybe (fromMaybe, isJust)+import Data.Maybe (catMaybes, fromMaybe, isJust) import Graphics.UI.Gtk.Windows.MessageDialog (ButtonsType(..), MessageType(..)) import System.Glib.Attributes (set)@@ -84,6 +84,7 @@ import qualified Data.Text as T (isSuffixOf, unpack, pack, null) import Data.Monoid ((<>)) import Control.Applicative ((<$>))+import Distribution.Text (display, simpleParse) -- --------------------------------------------------------------------- -- This needs to be incremented, when the preferences format changes@@ -612,8 +613,8 @@ (__ "Packages which are excluded from the modules pane") $ paraMinSize <<<- ParaMinSize (-1,200) $ emptyParams)- (PP.text . show)- readParser+ (PP.text . show . map display)+ (fmap (catMaybes . map simpleParse) readParser) packageBlacklist (\b a -> a{packageBlacklist = b}) (dependenciesEditor packages)@@ -815,7 +816,7 @@ , ("*Variables","LogCategory") , ("*Workspace","LogCategory")] , collectAtStart = True- , unpackDirectory = Nothing+ , unpackDirectory = Just ("~" </> configDirName </> "packageSources") , retrieveURL = "http://www.leksah.org" , retrieveStrategy = SP.RetrieveThenBuild , useCtrlTabFlipping = True
src/IDE/Pane/SourceBuffer.hs view
@@ -103,7 +103,6 @@ import IDE.SymbolNavigation import IDE.Completion as Completion (complete,cancel) import IDE.TextEditor-import qualified System.IO.UTF8 as UTF8 import Data.IORef (writeIORef,readIORef,newIORef) import Control.Event (triggerEvent) import IDE.Metainfo.Provider (getSystemInfo, getWorkspaceInfo)@@ -792,7 +791,7 @@ Nothing -> return () Just fn -> liftIDE $ do buffer <- getBuffer sv- fc <- liftIO $ UTF8.readFile fn+ fc <- liftIO $ readFile fn mt <- liftIO $ getModificationTime fn beginNotUndoableAction buffer setText buffer $ T.pack fc
src/IDE/Pane/WebKit/Inspect.hs view
@@ -96,11 +96,11 @@ instance RecoverablePane IDEInspect InspectState IDEM where saveState p = liftIO $ do #ifdef WEBKITGTK- return (Just InspectState{..})+ return (Just InspectState{}) #else Just <$> readIORef (inspectState p) #endif- recoverState pp InspectState {..} = do+ recoverState pp InspectState {} = do nb <- getNotebook pp mbPane <- buildPane pp nb builder case mbPane of
src/IDE/Pane/WebKit/Output.hs view
@@ -155,7 +155,7 @@ liftIO $ case (key, mod) of ("plus", [Shift,Control]) -> webViewZoomIn webView >> return True ("minus",[Control]) -> webViewZoomOut webView >> return True- ("BackSpace", []) -> webViewGoBack webView >> return True+ ("BackSpace", [Shift]) -> webViewGoBack webView >> return True _ -> return False cid3 <- on webView populatePopup $ \ menu -> do
src/IDE/Session.hs view
@@ -429,11 +429,11 @@ dialog <- fileChooserDialogNew (Just $ (__ "Select session file")) (Just window')- FileChooserActionOpen- [("gtk-cancel"- ,ResponseCancel)- ,("gtk-open"- , ResponseAccept)]+ FileChooserActionOpen+ [("gtk-cancel"+ ,ResponseCancel)+ ,("gtk-open"+ , ResponseAccept)] fileChooserSetCurrentFolder dialog configFolder widgetShow dialog res <- dialogRun dialog
src/IDE/Utils/GUIUtils.hs view
@@ -129,11 +129,9 @@ dialog <- fileChooserDialogNew (Just $ prompt) (Just window)- FileChooserActionSave- [("gtk-cancel"- ,ResponseCancel)- ,("gtk-save"- , ResponseAccept)]+ FileChooserActionSave+ [("gtk-cancel", ResponseCancel)+ ,("gtk-save", ResponseAccept)] when (isJust mbFolder) $ fileChooserSetCurrentFolder dialog (fromJust mbFolder) >> return () widgetShow dialog res <- dialogRun dialog
src/IDE/Utils/ServerConnection.hs view
@@ -26,17 +26,37 @@ import System.IO import Control.Exception (SomeException(..), catch) import Prelude hiding(catch)-import Control.Concurrent(forkIO)+import Control.Concurrent(forkIO, newEmptyMVar, putMVar, takeMVar, tryTakeMVar) import Graphics.UI.Gtk(postGUIAsync) import Control.Event(triggerEvent) import Control.Monad.IO.Class (MonadIO(..))-import System.Log.Logger (getLevel, getRootLogger)-import Control.Monad (void)+import Control.Monad.Reader (ask)+import System.Log.Logger (getLevel, getRootLogger, debugM)+import Control.Monad (void, forever) import qualified Data.Text as T (pack, unpack) import Data.Monoid ((<>)) -doServerCommand :: ServerCommand -> (ServerAnswer -> IDEM alpha) -> IDEAction+doServerCommand :: ServerCommand -> (ServerAnswer -> IDEM ()) -> IDEAction doServerCommand command cont = do+ q' <- readIDE serverQueue+ q <- case q' of+ Just q -> return q+ Nothing -> do+ q <- liftIO $ newEmptyMVar+ modifyIDE_ (\ ide -> ide{serverQueue = Just q})+ ideR <- ask+ liftIO . forkIO . forever $ do+ debugM "leksah" $ "Ready for command"+ (command, cont) <- takeMVar q+ reflectIDE (doServerCommand' command cont) ideR+ return q+ liftIO $ do+ tryTakeMVar q+ debugM "leksah" $ "Queue new command " ++ show command+ putMVar q (command, cont)++doServerCommand' :: ServerCommand -> (ServerAnswer -> IDEM ()) -> IDEAction+doServerCommand' command cont = do server' <- readIDE server case server' of Just handle -> do@@ -62,15 +82,17 @@ return () where doCommand handle = do- triggerEventIDE (StatusbarChanged [CompartmentCollect True])- reifyIDE $ \ideR -> forkIO $ do+ postAsyncIDE . void $ triggerEventIDE (StatusbarChanged [CompartmentCollect True])+ resp <- liftIO $ do+ debugM "leksah" $ "Sending server command " ++ show command hPrint handle command hFlush handle- resp <- hGetLine handle- postGUIAsync (reflectIDE (do- triggerEvent ideR (StatusbarChanged [CompartmentCollect False])- cont (read resp)- return ()) ideR)+ debugM "leksah" $ "Waiting on server command " ++ show command+ hGetLine handle+ liftIO . debugM "leksah" $ "Server result " ++ resp+ postAsyncIDE $ do+ triggerEventIDE (StatusbarChanged [CompartmentCollect False])+ cont (read resp) startServer :: Int -> IO () startServer port = do
src/IDE/Workspaces.hs view
@@ -74,7 +74,6 @@ import qualified Control.Exception as Exc (SomeException(..), throw, Exception) import qualified Data.Map as Map (empty) import IDE.Pane.SourceBuffer (fileOpenThis, fileCheckAll, belongsToPackages)-import qualified System.IO.UTF8 as UTF8 (writeFile) import System.Glib.Attributes (AttrOp(..), set) import Graphics.UI.Gtk.General.Enums (WindowPosition(..)) import Control.Applicative ((<$>))@@ -437,7 +436,7 @@ debug <- isJust <$> readIDE debugState return $ case (runTests, debug) of (True, True) -> [MoBuild,MoDocu]- (True, False) -> [MoBuild,MoDocu,MoCopy,MoRegister]+ (True, False) -> [MoBuild,MoDocu,MoTest,MoCopy,MoRegister] (False, True) -> [MoBuild] (False, False) -> [MoBuild,MoCopy,MoRegister]
tests/Tests.hs view
@@ -28,7 +28,7 @@ import System.Log (Priority(..)) import Control.Concurrent (yield, takeMVar, putMVar, newEmptyMVar, threadDelay, forkIO)-import System.Glib.MainLoop (priorityHigh)+import System.Glib.MainLoop (priorityLow) import Data.Monoid ((<>)) testString = " Could not find module `Graphics.UI.Gtk':\n" @@ -52,7 +52,7 @@ updateGlobalLogger rootLoggerName (setLevel DEBUG) allPass <- $quickCheckAll -- Run QuickCheck on all prop_ functions initGUI- timeoutAddFull (yield >> return True) priorityHigh 10+ timeoutAddFull (yield >> return True) priorityLow 10 editorsOk <- testEditors putMVar result (allPass && editorsOk) forkIO $ do
win32/makeinstaller.sh view
@@ -1,120 +1,142 @@-#!/bin/sh - -. scripts/stage.sh || exit - -export CABAL_USER_BIN=$HOME/AppData/Roaming/cabal/bin -export GHC_USER_PREFIX=$HOME/AppData/Roaming/cabal/x86_64-windows-ghc-`ghc$GHCVERSION --numeric-version` -export LEKSAH_PREFIX=$GHC_USER_PREFIX -export LEKSAH_SERVER_PREFIX=$GHC_USER_PREFIX -export HLINT_X_X_X_X=`ghc-pkg$GHCVERSION list |grep '^ *hlint-' | tail -n1 | tr -d ' \n'` -export PRETTY_SHOW_X_X=`ghc-pkg$GHCVERSION list |grep '^ *pretty-show-' | tail -n1 | tr -d ' \n'` -export GHCJS_CODEMIRROR_X_X_X_X=`ghc-pkg$GHCVERSION list |grep '^ *ghcjs-codemirror-' | tail -n1 | tr -d ' \n'` - -sed 's|\<ctrl\>q|\<alt\>F4|' <data/keymap.lkshk >"$LEKSAH_PREFIX/$LEKSAH_X_X_X_X/data/keymap.lkshk" || exit - -cd win32 || exit - -export MINGW_BIN=`cmd //C echo \`dirname \\\`which gcc\\\`\`` -export PATH=$PATH:/c/Program\ Files\ \(x86\)/NSIS:/c/Program\ Files/NSIS -#makensis leksah.nsi - -export PATH=$PATH:/c/Program\ Files\ \(x86\)/WiX\ Toolset\ v3.8/bin:/c/Program\ Files/WiX\ Toolset\ v3.8/bin -mkdir -p SourceDir -cp -ru leksah.bat SourceDir -cp -ru leksah-server.bat SourceDir -cp -ru leksah-rebuild-metadata.bat SourceDir -cp -ru "$GTK_PREFIX"/etc SourceDir -mkdir -p SourceDir/leksah -cp -ru "$LEKSAH_PREFIX/$LEKSAH_X_X_X_X"/data SourceDir/leksah -cp -ru "$LEKSAH_PREFIX/$LEKSAH_X_X_X_X"/language-specs SourceDir/leksah -cp -ru "$LEKSAH_PREFIX/$LEKSAH_X_X_X_X"/pics SourceDir/leksah -cp -u "$LEKSAH_PREFIX/$LEKSAH_X_X_X_X"/LICENSE SourceDir/leksah -cp -u "$LEKSAH_PREFIX/$LEKSAH_X_X_X_X"/Readme.md SourceDir/leksah -mkdir -p SourceDir/hlint -cp -ru "$LEKSAH_PREFIX/$HLINT_X_X_X_X"/* SourceDir/hlint -mkdir -p SourceDir/pretty-show -cp -ru "$LEKSAH_PREFIX/$PRETTY_SHOW_X_X"/style SourceDir/pretty-show -mkdir -p SourceDir/ghcjs-codemirror -cp -ru "$LEKSAH_PREFIX/$GHCJS_CODEMIRROR_X_X_X_X"/mode SourceDir/ghcjs-codemirror -cp -ru "$LEKSAH_PREFIX/$GHCJS_CODEMIRROR_X_X_X_X"/lib SourceDir/ghcjs-codemirror -cp -ru "$LEKSAH_PREFIX/$GHCJS_CODEMIRROR_X_X_X_X"/keymap SourceDir/ghcjs-codemirror -cp -ru "$LEKSAH_PREFIX/$GHCJS_CODEMIRROR_X_X_X_X"/theme SourceDir/ghcjs-codemirror -mkdir -p SourceDir/bin -cp -u "$CABAL_USER_BIN"/leksah.exe SourceDir/bin -cp -u "$CABAL_USER_BIN"/vcswrapper.exe SourceDir/bin -cp -u "$CABAL_USER_BIN"/vcsgui.exe SourceDir/bin -cp -u "$CABAL_USER_BIN"/vcsgui-askpass.exe SourceDir/bin -cp -u "$CABAL_USER_BIN"/leksah-server.exe SourceDir/bin -cp -u "$CABAL_USER_BIN"/leksahecho.exe SourceDir/bin -cp -u "$GTK_PREFIX"/bin/iconv.dll SourceDir/bin -cp -u "$GTK_PREFIX"/bin/icudata50.dll SourceDir/bin -cp -u "$GTK_PREFIX"/bin/icui18n50.dll SourceDir/bin -cp -u "$GTK_PREFIX"/bin/icule50.dll SourceDir/bin -cp -u "$GTK_PREFIX"/bin/icuuc50.dll SourceDir/bin -cp -u "$GTK_PREFIX"/bin/libatk-1.0-0.dll SourceDir/bin -cp -u "$GTK_PREFIX"/bin/libbz2-1.dll SourceDir/bin -cp -u "$GTK_PREFIX"/bin/libcairo-2.dll SourceDir/bin -cp -u "$GTK_PREFIX"/bin/libcairo-gobject-2.dll SourceDir/bin -cp -u "$GTK_PREFIX"/bin/libcrypto-10.dll SourceDir/bin -cp -u "$GTK_PREFIX"/bin/libenchant.dll SourceDir/bin -cp -u "$GTK_PREFIX"/bin/libexpat-1.dll SourceDir/bin -cp -u "$GTK_PREFIX"/bin/libffi-6.dll SourceDir/bin -cp -u "$GTK_PREFIX"/bin/libfontconfig-1.dll SourceDir/bin -cp -u "$GTK_PREFIX"/bin/libfreetype-6.dll SourceDir/bin -cp -u "$GTK_PREFIX"/bin/libgailutil-3-0.dll SourceDir/bin -cp -u "$GTK_PREFIX"/bin/libgcc_s_seh-1.dll SourceDir/bin -cp -u "$GTK_PREFIX"/bin/libgcc_s_sjlj-1.dll SourceDir/bin -cp -u "$GTK_PREFIX"/bin/libgdk-3-0.dll SourceDir/bin -cp -u "$GTK_PREFIX"/bin/libgdk_pixbuf-2.0-0.dll SourceDir/bin -cp -u "$GTK_PREFIX"/bin/libgio-2.0-0.dll SourceDir/bin -cp -u "$GTK_PREFIX"/bin/libglib-2.0-0.dll SourceDir/bin -cp -u "$GTK_PREFIX"/bin/libgmodule-2.0-0.dll SourceDir/bin -cp -u "$GTK_PREFIX"/bin/libgobject-2.0-0.dll SourceDir/bin -cp -u "$GTK_PREFIX"/bin/libgst*-1.0-0.dll SourceDir/bin -cp -u "$GTK_PREFIX"/bin/libgthread-2.0-0.dll SourceDir/bin -cp -u "$GTK_PREFIX"/bin/libgtk-3-0.dll SourceDir/bin -cp -u "$GTK_PREFIX"/bin/libgtksourceview-3.0-1.dll SourceDir/bin -cp -u "$GTK_PREFIX"/bin/libharfbuzz-0.dll SourceDir/bin -cp -u "$GTK_PREFIX"/bin/libharfbuzz-icu-0.dll SourceDir/bin -cp -u "$GTK_PREFIX"/bin/libidn-11.dll SourceDir/bin -cp -u "$GTK_PREFIX"/bin/libintl-8.dll SourceDir/bin -cp -u "$GTK_PREFIX"/bin/libjavascriptcoregtk-3.0-0.dll SourceDir/bin -cp -u "$GTK_PREFIX"/bin/libjpeg-62.dll SourceDir/bin -cp -u "$GTK_PREFIX"/bin/libpango-1.0-0.dll SourceDir/bin -cp -u "$GTK_PREFIX"/bin/libpangocairo-1.0-0.dll SourceDir/bin -cp -u "$GTK_PREFIX"/bin/libpangoft2-1.0-0.dll SourceDir/bin -cp -u "$GTK_PREFIX"/bin/libpangowin32-1.0-0.dll SourceDir/bin -cp -u "$GTK_PREFIX"/bin/libpixman-1-0.dll SourceDir/bin -cp -u "$GTK_PREFIX"/bin/libpng16-16.dll SourceDir/bin -cp -u "$GTK_PREFIX"/bin/libsoup-2.4-1.dll SourceDir/bin -cp -u "$GTK_PREFIX"/bin/libsqlite3-0.dll SourceDir/bin -cp -u "$GTK_PREFIX"/bin/libssh2-1.dll SourceDir/bin -cp -u "$GTK_PREFIX"/bin/libssl-10.dll SourceDir/bin -cp -u "$GTK_PREFIX"/bin/libstdc++-6.dll SourceDir/bin -cp -u "$GTK_PREFIX"/bin/libxml2-2.dll SourceDir/bin -cp -u "$GTK_PREFIX"/bin/libxslt-1.dll SourceDir/bin -cp -u "$GTK_PREFIX"/bin/libwebkitgtk-3.0-0.dll SourceDir/bin -cp -u "$GTK_PREFIX"/bin/libwebp-5.dll SourceDir/bin -cp -u "$GTK_PREFIX"/bin/libwinpthread-1.dll SourceDir/bin -cp -u "$GTK_PREFIX"/bin/zlib1.dll SourceDir/bin -cp -u "$GTK_PREFIX"/bin/pkg-config.exe SourceDir/bin -cp -u "$GTK_PREFIX"/bin/grep.exe SourceDir/bin -mkdir -p SourceDir/share -cp -ru "$GTK_PREFIX"/share/themes SourceDir/share -cp -ru "$GTK_PREFIX"/share/icons SourceDir/share -cp -ru "$GTK_PREFIX"/share/glib-2.0 SourceDir/share -cp -ru "$GTK_PREFIX"/share/gtksourceview-3.0 SourceDir/share -mkdir -p SourceDir/libexec -cp -ru "$GTK_PREFIX"/libexec/gstreamer-1.0 SourceDir/libexec - -cp -ru "$GTK_PREFIX"/include SourceDir -cp -ru "$GTK_PREFIX"/lib SourceDir - -# mkdir -p SourceDir/fonts -# cp -ru /c/Windows/Fonts/DejaVuS*.ttf SourceDir - -heat dir SourceDir -srd -gg -sfrag -template fragment -out heat.wxs -cg Leksah -dr INSTALLDIR -sreg suppress registry harvesting || exit -candle heat.wxs || exit -candle leksah.wxs || exit -light -ext WixUIExtension heat.wixobj leksah.wixobj -out $LEKSAH_X_X_X_X.msi || exit - +#!/bin/sh -ex++if ["$WINE" -eq ""]+then+ WINEPATH_U=echo+ WINE_APPDATA=$APPDATA+ LN='cp -uH'+ LNDIR='cp -ruH'+else+ WINE_APPDATA=`$WINE cmd /C echo %APPDATA% | tr -d '\r\n'`+ LN='ln -s'+ LNDIR='ln -s'+fi++. scripts/stage.sh || exit++export CABAL_USER_BIN=`$WINEPATH_U "$WINE_APPDATA"/cabal/bin`+export GHC_USER_PREFIX=`$WINEPATH_U "$WINE_APPDATA"/cabal/x86_64-windows-ghc-\`$WINE ghc$GHCVERSION --numeric-version | tr -d '\r\n'\``+export LEKSAH_PREFIX=$GHC_USER_PREFIX+export LEKSAH_SERVER_PREFIX=$GHC_USER_PREFIX+export HLINT_X_X_X_X=`$WINE ghc-pkg$GHCVERSION list |grep '^ *hlint-' | tail -n1 | tr -d ' \r\n'`+export PRETTY_SHOW_X_X=`$WINE ghc-pkg$GHCVERSION list |grep '^ *pretty-show-' | tail -n1 | tr -d ' \r\n'`+export GHCJS_CODEMIRROR_X_X_X_X=`$WINE ghc-pkg$GHCVERSION list |grep '^ *ghcjs-codemirror-' | tail -n1 | tr -d ' \r\n'`+export GTK_PREFIX_U=`$WINEPATH_U "$GTK_PREFIX"`++sed 's|\<ctrl\>q|\<alt\>F4|' <data/keymap.lkshk >"$LEKSAH_PREFIX/$LEKSAH_X_X_X_X/data/keymap.lkshk" || exit++cd win32 || exit++export PATH=$PATH:/c/Program\ Files\ \(x86\)/WiX\ Toolset\ v3.8/bin:/c/Program\ Files/WiX\ Toolset\ v3.8/bin+mkdir -p SourceDir+cp -u leksah.bat SourceDir+cp -u leksah-server.bat SourceDir+cp -u leksah-rebuild-metadata.bat SourceDir+$LNDIR "$GTK_PREFIX_U"/etc SourceDir+mkdir -p SourceDir/leksah+$LNDIR "$LEKSAH_PREFIX/$LEKSAH_X_X_X_X"/data SourceDir/leksah+$LNDIR "$LEKSAH_PREFIX/$LEKSAH_X_X_X_X"/language-specs SourceDir/leksah+$LNDIR "$LEKSAH_PREFIX/$LEKSAH_X_X_X_X"/pics SourceDir/leksah+$LN "$LEKSAH_PREFIX/$LEKSAH_X_X_X_X"/LICENSE SourceDir/leksah+$LN "$LEKSAH_PREFIX/$LEKSAH_X_X_X_X"/Readme.md SourceDir/leksah+mkdir -p SourceDir/hlint+$LNDIR "$LEKSAH_PREFIX/$HLINT_X_X_X_X"/* SourceDir/hlint+mkdir -p SourceDir/pretty-show+$LNDIR "$LEKSAH_PREFIX/$PRETTY_SHOW_X_X"/style SourceDir/pretty-show+mkdir -p SourceDir/ghcjs-codemirror+$LNDIR "$LEKSAH_PREFIX/$GHCJS_CODEMIRROR_X_X_X_X"/mode SourceDir/ghcjs-codemirror+$LNDIR "$LEKSAH_PREFIX/$GHCJS_CODEMIRROR_X_X_X_X"/lib SourceDir/ghcjs-codemirror+$LNDIR "$LEKSAH_PREFIX/$GHCJS_CODEMIRROR_X_X_X_X"/keymap SourceDir/ghcjs-codemirror+$LNDIR "$LEKSAH_PREFIX/$GHCJS_CODEMIRROR_X_X_X_X"/theme SourceDir/ghcjs-codemirror+mkdir -p SourceDir/bin+$LN "$CABAL_USER_BIN"/leksah.exe SourceDir/bin+$LN "$CABAL_USER_BIN"/vcswrapper.exe SourceDir/bin+$LN "$CABAL_USER_BIN"/vcsgui.exe SourceDir/bin+$LN "$CABAL_USER_BIN"/vcsgui-askpass.exe SourceDir/bin+$LN "$CABAL_USER_BIN"/leksah-server.exe SourceDir/bin+$LN "$CABAL_USER_BIN"/leksahecho.exe SourceDir/bin+$LN "$CABAL_USER_BIN"/leksahtrue.exe SourceDir/bin+$LN "$GTK_PREFIX_U"/bin/iconv.dll SourceDir/bin+$LN "$GTK_PREFIX_U"/bin/icudata50.dll SourceDir/bin+$LN "$GTK_PREFIX_U"/bin/icui18n50.dll SourceDir/bin+$LN "$GTK_PREFIX_U"/bin/icule50.dll SourceDir/bin+$LN "$GTK_PREFIX_U"/bin/icuuc50.dll SourceDir/bin+$LN "$GTK_PREFIX_U"/bin/libatk-1.0-0.dll SourceDir/bin+$LN "$GTK_PREFIX_U"/bin/libbz2-1.dll SourceDir/bin+$LN "$GTK_PREFIX_U"/bin/libcairo-2.dll SourceDir/bin+$LN "$GTK_PREFIX_U"/bin/libcairo-gobject-2.dll SourceDir/bin+$LN "$GTK_PREFIX_U"/bin/libenchant.dll SourceDir/bin+$LN "$GTK_PREFIX_U"/bin/libepoxy-0.dll SourceDir/bin+$LN "$GTK_PREFIX_U"/bin/libexpat-1.dll SourceDir/bin+$LN "$GTK_PREFIX_U"/bin/libexslt-0.dll SourceDir/bin+$LN "$GTK_PREFIX_U"/bin/libffi-6.dll SourceDir/bin+$LN "$GTK_PREFIX_U"/bin/libfontconfig-1.dll SourceDir/bin+$LN "$GTK_PREFIX_U"/bin/libfreetype-6.dll SourceDir/bin+$LN "$GTK_PREFIX_U"/bin/libgailutil-3-0.dll SourceDir/bin+$LN "$GTK_PREFIX_U"/bin/libgcc_s_seh-1.dll SourceDir/bin+$LN "$GTK_PREFIX_U"/bin/libgdk-3-0.dll SourceDir/bin+$LN "$GTK_PREFIX_U"/bin/libgdk_pixbuf-2.0-0.dll SourceDir/bin+$LN "$GTK_PREFIX_U"/bin/libgio-2.0-0.dll SourceDir/bin+$LN "$GTK_PREFIX_U"/bin/libglib-2.0-0.dll SourceDir/bin+$LN "$GTK_PREFIX_U"/bin/libgmodule-2.0-0.dll SourceDir/bin+$LN "$GTK_PREFIX_U"/bin/libgmp-10.dll SourceDir/bin+$LN "$GTK_PREFIX_U"/bin/libgnutls-28.dll SourceDir/bin+$LN "$GTK_PREFIX_U"/bin/libgobject-2.0-0.dll SourceDir/bin+$LN "$GTK_PREFIX_U"/bin/libgst*-1.0-0.dll SourceDir/bin+$LN "$GTK_PREFIX_U"/bin/libgthread-2.0-0.dll SourceDir/bin+$LN "$GTK_PREFIX_U"/bin/libgtk-3-0.dll SourceDir/bin+$LN "$GTK_PREFIX_U"/bin/libgtksourceview-3.0-1.dll SourceDir/bin+$LN "$GTK_PREFIX_U"/bin/libharfbuzz-0.dll SourceDir/bin+$LN "$GTK_PREFIX_U"/bin/libharfbuzz-icu-0.dll SourceDir/bin+$LN "$GTK_PREFIX_U"/bin/libhogweed-2-5.dll SourceDir/bin+$LN "$GTK_PREFIX_U"/bin/libintl-8.dll SourceDir/bin+$LN "$GTK_PREFIX_U"/bin/libjavascriptcoregtk-3.0-0.dll SourceDir/bin+$LN "$GTK_PREFIX_U"/bin/libjpeg-62.dll SourceDir/bin+$LN "$GTK_PREFIX_U"/bin/libnettle-4-7.dll SourceDir/bin+$LN "$GTK_PREFIX_U"/bin/libp11-kit-0.dll SourceDir/bin+$LN "$GTK_PREFIX_U"/bin/libpango-1.0-0.dll SourceDir/bin+$LN "$GTK_PREFIX_U"/bin/libpangocairo-1.0-0.dll SourceDir/bin+$LN "$GTK_PREFIX_U"/bin/libpangoft2-1.0-0.dll SourceDir/bin+$LN "$GTK_PREFIX_U"/bin/libpangowin32-1.0-0.dll SourceDir/bin+$LN "$GTK_PREFIX_U"/bin/libpixman-1-0.dll SourceDir/bin+$LN "$GTK_PREFIX_U"/bin/libpng16-16.dll SourceDir/bin+$LN "$GTK_PREFIX_U"/bin/libsoup-2.4-1.dll SourceDir/bin+$LN "$GTK_PREFIX_U"/bin/libsqlite3-0.dll SourceDir/bin+$LN "$GTK_PREFIX_U"/bin/libstdc++-6.dll SourceDir/bin+$LN "$GTK_PREFIX_U"/bin/libtasn1-6.dll SourceDir/bin+$LN "$GTK_PREFIX_U"/bin/libxml2-2.dll SourceDir/bin+$LN "$GTK_PREFIX_U"/bin/libxslt-1.dll SourceDir/bin+$LN "$GTK_PREFIX_U"/bin/libwebkitgtk-3.0-0.dll SourceDir/bin+$LN "$GTK_PREFIX_U"/bin/libwebp-5.dll SourceDir/bin+$LN "$GTK_PREFIX_U"/bin/libwinpthread-1.dll SourceDir/bin+$LN "$GTK_PREFIX_U"/bin/zlib1.dll SourceDir/bin+$LN "$GTK_PREFIX_U"/bin/pkg-config.exe SourceDir/bin+$LN "$GTK_PREFIX_U"/bin/grep.exe SourceDir/bin+$LN "$GTK_PREFIX_U"/bin/xsltproc.exe SourceDir/bin+mkdir -p SourceDir/share+$LNDIR "$GTK_PREFIX_U"/share/themes SourceDir/share+$LNDIR "$GTK_PREFIX_U"/share/icons SourceDir/share+$LNDIR "$GTK_PREFIX_U"/share/glib-2.0 SourceDir/share+$LNDIR "$GTK_PREFIX_U"/share/gtksourceview-3.0 SourceDir/share+mkdir -p SourceDir/libexec+$LNDIR "$GTK_PREFIX_U"/libexec/gstreamer-1.0 SourceDir/libexec++$LNDIR "$GTK_PREFIX_U"/include SourceDir+$LNDIR "$GTK_PREFIX_U"/lib SourceDir++# mkdir -p SourceDir/fonts+# cp -ru /c/Windows/Fonts/DejaVuS*.ttf SourceDir+export WINEPREFIX=~/.wine32+export WINEARCH=win32+if ["$WINE" -eq ""]+then+ heat dir SourceDir -srd -gg -sfrag -template fragment -out heat.wxs -cg Leksah -dr INSTALLDIR -sreg suppress registry harvesting || exit+ LIGHT=light+else+ find SourceDir -follow | wixl-heat -p SourceDir/ --component-group Leksah --directory-ref INSTALLDIR > heat.wxs || exit+ LIGHT='light -sval'+fi+xsltproc heat.xslt heat.wxs > heatfixed.wxs+$WINE candle heatfixed.wxs || exit+$WINE candle leksah.wxs || exit+$WINE $LIGHT -ext WixUIExtension heatfixed.wixobj leksah.wixobj -out $LEKSAH_X_X_X_X_GHC_X_X_X.msi || exit