mirror of
https://github.com/haskell/ghcide.git
synced 2024-09-11 13:57:06 +03:00
Update the hie-bios commit SHA (#1825)
* Update the hie-bios commit SHA * Also update the SHA in our bazel WORKSPACE * Update the hash too * Tutorial for Emacs integration * Update hie-bios patch
This commit is contained in:
parent
f46fff9b0a
commit
59e871c6e8
50
hie-core-in-emacs.md
Normal file
50
hie-core-in-emacs.md
Normal file
@ -0,0 +1,50 @@
|
||||
# How to get `hie-core` working in Emacs
|
||||
|
||||
First step is to install required Emacs packages. If you don't already have Melpa config stuff in your `.emacs`, put this stanza at the top.
|
||||
```
|
||||
;;Melpa packages support
|
||||
(require 'package)
|
||||
(let* ((no-ssl (and (memq system-type '(windows-nt ms-dos))
|
||||
(not (gnutls-available-p))))
|
||||
(proto (if no-ssl "http" "https")))
|
||||
(when no-ssl
|
||||
(warn "\
|
||||
Your version of Emacs does not support SSL connections,
|
||||
which is unsafe because it allows man-in-the-middle attacks.
|
||||
There are two things you can do about this warning:
|
||||
1. Install an Emacs version that does support SSL and be safe.
|
||||
2. Remove this warning from your init file so you won't see it again."))
|
||||
;; Comment/uncomment these two lines to enable/disable MELPA and MELPA Stable as desired
|
||||
(add-to-list 'package-archives (cons "melpa" (concat proto "://melpa.org/packages/")) t)
|
||||
;;(add-to-list 'package-archives (cons "melpa-stable" (concat proto "://stable.melpa.org/packages/")) t)
|
||||
(when (< emacs-major-version 24)
|
||||
;; For important compatibility libraries like cl-lib
|
||||
(add-to-list 'package-archives (cons "gnu" (concat proto "://elpa.gnu.org/packages/")))))
|
||||
(package-initialize)
|
||||
;; Remember : to avoid package-not-found errors, refresh the package
|
||||
;; database now and then with M-x package-refresh-contents.
|
||||
```
|
||||
|
||||
When this is in your `.emacs` and it's been evaluated, `M-x package-refresh-contents` to get the package database downloaded and then `M-x package-list-packages` to display the available packages. Click on a package to install it. You'll need to install the following packages.
|
||||
- `lsp-haskell`
|
||||
- `lsp-ui`
|
||||
- `flycheck`
|
||||
- `yasnippet`
|
||||
|
||||
When done with this, add the following lines to your `.emacs` :
|
||||
```
|
||||
;; lsp-haskell
|
||||
(require 'lsp)
|
||||
(require 'lsp-haskell)
|
||||
(require 'yasnippet)
|
||||
(add-hook 'haskell-mode-hook #'lsp)
|
||||
(setq lsp-haskell-process-path-hie "hie-core")
|
||||
(setq lsp-haskell-process-args-hie '())
|
||||
(setq lsp-log-io t) ;; Inspect comms betweeen lsp client/server
|
||||
```
|
||||
|
||||
Next stop is to build `hie-core`. In the `daml` repository, navigate to `//compiler/hie-core` and invoked `stack build`. This will install the `hie-core` executable into a location along the lines of `/Users/shaynefletcher/project/daml.git/compiler/hie-core/.stack-work/install/x86_64-osx/nightly-2019-05-20/8.6.5/bin/hie-core`. You want to get this executable in your `$PATH`. I achieved this by `ln -s /Users/shaynefletcher/project/daml.git/compiler/hie-core/.stack-work/install/x86_64-osx/nightly-2019-05-20/8.6.5/bin/hie-core ~/.local/bin/hie-core` (because `~/.local/bin` is put in my `PATH` in my `~/.bashrc`).
|
||||
|
||||
Time to test things out. It's important to note that you for this to work, your programs need to be compiled with the same compiler used to build `hie-core`. For testing, I've been using the `ghc-lib-gen` target of the `ghc-lib` project). Navigate to the root of `ghc-lib`, create an `hie.yaml` file with contents `cradle: {cabal: {component: "exe:ghc-lib-gen"}}`. Invoke `cabal new-configure -w ~/.stack/programs/~/.stack/programs/x86_64-osx/ghc-8.6.5/bin/ghc` (this is the `ghc` used by `stack` to build `hie-core` - consult `//compiler/hie-core/stack.yaml` to help work out what you should write here). This last step will create a file `cabal.project.local` with contents pointing `cabal` to use the desired `ghc`. You can build `ghc-lib-gen` from the `ghc-lib` directory with the command `cabal new-build` as you like.
|
||||
|
||||
After the last step, you should be all set. Open `ghc-lib/ghc-lib-gen/src/Main.hs` in an Emacs buffer and, for example, hover should bring up type/definition info.
|
@ -9,6 +9,6 @@ extra-deps:
|
||||
- .
|
||||
- haskell-lsp-types
|
||||
- git: https://github.com/mpickering/hie-bios.git
|
||||
commit: 9f9fe00591c429c410475349560252ca7e622f1b
|
||||
commit: 8427e424a83c2f3d60bdd26c02478c00d2189a73
|
||||
nix:
|
||||
packages: [zlib]
|
||||
|
Loading…
Reference in New Issue
Block a user