Coder Social home page Coder Social logo

emacs-lsp / lsp-haskell Goto Github PK

View Code? Open in Web Editor NEW
227.0 16.0 56.0 1.21 MB

lsp-mode :heart: haskell

Home Page: https://emacs-lsp.github.io/lsp-haskell

License: GNU General Public License v3.0

Emacs Lisp 98.34% Makefile 1.66%
haskell lsp-haskell hie melpa lsp emacs-lsp

lsp-haskell's Introduction

lsp-haskell

MELPA Build Status

An Emacs Lisp library for interacting with a Haskell language server such as haskell-language-server using Microsoft's Language Server Protocol.

The library acts as a client for lsp-mode.

Functionality

This main functionality of lsp-haskell is:

  • Finding and launching the haskell-language-server binary
  • Providing configuration options to haskell-language-server

If you would like to know about how LSP functionality is provided in Emacs and how to use it, please consult lsp-mode. If you would like to know about the LSP functionality which is provided by the Haskell language server, please consult haskell-language-server.

Installation

Follow the lsp-mode installation instructions. Do not skip this! It has important information.

lsp-mode automatically requires the lsp-haskell package , so you do not need to require lsp-haskell unless you like being explicit. Similarly, lsp-haskell automatically requires the haskell-mode package, so you do not need to require haskell-mode.

You will need to set some hooks to ensure that lsp-mode is triggered when the haskell-mode major mode is entered.

(add-hook 'haskell-mode-hook #'lsp)
(add-hook 'haskell-literate-mode-hook #'lsp)

Configuration

HLS has some configuration you can modify using either the lsp-haskell or lsp customization groups:

(customize-group 'lsp-haskell)

; or

(customize-group 'lsp)

If you want to modify some configuration that this project doesn't support yet you can customize things explicitly yourself using lsp--set-configuration. For example:

(add-hook 'lsp-after-initialize-hook
          '(lambda ()
             (lsp--set-configuration
              '(:haskell (:plugin (:tactics (:config (:timeout_duration 5)))))
              )))

Language server installation

Follow the instructions on the haskell-language-server repositories to install the server binaries.

If you have installed the binaries to a location that is not on your PATH, or you are not using the haskell-language-server-wrapper, then you will need to customize the lsp-haskell-server-path variable to point to the executable you want to launch.

Server configuration

lsp-haskell provides a few options for for setting the server executable and arguments, and numerous settings for configuring the server itself (hlint, choice of formatting provider, etc.).

Note that server configuration settings will currently not be applied until the server is restarted.

Troubleshooting

lsp-haskell is just the glue between lsp-mode and haskell-language-server.

If you have an issue with Emacs, it is probably a lsp-mode issue. If you have an issue with the Haskell functionality itself, it is probably a haskell-language-server issue. If you have an issue specifically with how the two are joined together, then it belongs here!

If you're not sure what the problem is, the haskell-language-server README provides some troubleshooting instructions.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.