mrcjkb / haskell-tools.nvim

๐Ÿฆฅ Supercharge your Haskell experience in neovim!

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

HSC file's error message is inundating!!!

nothankyouzzz opened this issue ยท comments

Neovim version (nvim -v)

v0.10.0

Operating system/version

Archlinux Rolling

Output of :checkhealth haskell-tools

haskell-tools: require("haskell-tools.health").check()

Checking for Lua dependencies ~
- OK [nvim-telescope/telescope.nvim](https://github.com/nvim-telescope/telescope.nvim) installed.

Checking external dependencies ~
- OK haskell-language-server: found haskell-language-server version: 2.7.0.0 (GHC: 9.2.8) (PATH: /home/even/.local/share/nvim/mason/packages/haskell-language-server/lib/haskell-language-server-2.7.0.0/bin/haskell-language-server-wrapper)
- OK hoogle: found Hoogle 5.0.18.4, https://hoogle.haskell.org/
- OK fast-tags: found fast-tags, version 2.0.2
- OK curl: found curl 8.8.0 (x86_64-pc-linux-gnu) libcurl/8.8.0 OpenSSL/3.3.0 zlib/1.3.1 brotli/1.1.0 zstd/1.5.6 libidn2/2.3.7 libpsl/0.21.5 libssh2/1.11.0 nghttp2/1.62.1 nghttp3/1.3.0
- OK haskell-debug-adapter: found haskell-debug-adapter-0.0.39.0
- OK ghci-dap: found The Glorious Glasgow Haskell Compilation System, version 9.6.5

Checking config ~
- OK No errors found in config.

Checking for conflicting plugins ~
- OK No conflicting plugins detected.

How to reproduce the issue

Create any .hsc. file such this:

{-# LANGUAGE CPP, ForeignFunctionInterface #-}
{-# LANGUAGE UnboxedTuples #-}
{-# LANGUAGE MagicHash #-}
{-# LANGUAGE UnliftedFFITypes #-}

#define PCRE2_CODE_UNIT_WIDTH 16

#include <pcre.h>
#include <pcre2.h>

module Text.Regex.PCRE2.Demo.Base (
  PCREOption,
  PCRE,
  PCRE2_Code,
  PCRE2_Compile_Context,
  caseless,
  dollar_endonly,
  dotall,
  c_pcre_compile,
  c_pcre2_compile,
) where

import Data.Bits        ((.|.))
import Foreign.C.Types  (CInt(CInt), CSize(CSize))
import Foreign.C.String (CString)
import Foreign.Ptr      (Ptr)
import Data.Word        (Word8)
import GHC.Base         (Word32##)

newtype PCREOption = PCREOption CInt

instance Semigroup PCREOption where
  (PCREOption a) <> (PCREOption b) = PCREOption (a .|. b)

instance Monoid PCREOption where
  mempty = PCREOption 0

#{enum PCREOption, PCREOption
, caseless       = PCRE_CASELESS
, dollar_endonly = PCRE_DOLLAR_ENDONLY
, dotall         = PCRE_DOTALL
}

data PCRE

foreign import ccall unsafe "pcre.h pcre_compile"
  c_pcre_compile :: CString
                 -> PCREOption
                 -> Ptr CString
                 -> Ptr CInt
                 -> Ptr Word8
                 -> IO (Ptr PCRE)

data PCRE2_Code
data PCRE2_Compile_Context

-- pcre2_code *
-- pcre2_compile(PCRE2_SPTR pattern,
--              PCRE2_SIZE length,,
--              uint32_t options,,
--              int *errorcode,
--              PCRE2_SIZE *erroroffset,
--              pcre2_compile_context *ccontext); 
foreign import ccall unsafe "pcre2.h pcre2_compile"
  c_pcre2_compile :: CString
                  -> CSize
                  -> Word32##
                  -> Ptr CInt
                  -> Ptr CSize
                  -> Ptr PCRE2_Compile_Context
                  -> Ptr PCRE2_Code

Expected behaviour

At lease, we should have a option to block such bothering warning rather than let it destroy user's FFI coding experience.

Actual behaviour

ๅ›พ็‰‡
ๅ›พ็‰‡

Log files

No response

The minimal config used to reproduce this issue.

nothing special, any haskell-tools.nvim installation will reproduce this problem...(I'm using lazyvim now.

Hey ๐Ÿ‘‹

this is a haskell-language-server issue, not related to haskell-tools.
You can disable auto_attach for .hsc files. See :h haskell-tools.config.

Hey ๐Ÿ‘‹

this is a haskell-language-server issue, not related to haskell-tools. You can disable auto_attach for .hsc files. See :h haskell-tools.config.

sry, i can't understand how to use it? it doesn't accept any parameters and seemed to be a const function...
could you paste a example here?

Hey ๐Ÿ‘‹

this is a haskell-language-server issue, not related to haskell-tools. You can disable auto_attach for .hsc files. See :h haskell-tools.config.

thx for your reply, successfully solved.

A possible solution:

return {
  {
    "mrcjkb/haskell-tools.nvim",

    config = function()
      vim.g.haskell_tools = {
        hls = {
          auto_attach = function()
            local bufnr = vim.api.nvim_get_current_buf()
            local filename = vim.api.nvim_buf_get_name(bufnr)
            return not filename:match("%.hsc$")
          end,
        },
      }
    end,
  },
}