Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix: ignore Haskell char node function match #97

Draft
wants to merge 1 commit into
base: main
Choose a base branch
from

Conversation

yogan
Copy link

@yogan yogan commented Mar 2, 2024

This is obviously just a hack, but without it, the autocommand is going haywire when moving around in Haskell files, making it impossible to work.

I could not find out where the function is for char nodes is coming from. Any hints / help for a proper fix are welcome.

This is obviously just a hack, but without it, the autocommand is going
haywire when moving around in Haskell files, making it impossible to
work.
@yogan yogan marked this pull request as draft March 2, 2024 12:56
@JoosepAlviste
Copy link
Owner

Hey! What exactly is going on in Haskell files? I couldn't really reproduce any weird behaviour with this file:

Example
putTodo :: (Int, String) -> IO ()
putTodo (n, todo) = putStrLn (show n ++ ": " ++ todo)

prompt :: [String] -> IO ()
prompt todos = do
    putStrLn ""
    putStrLn "Current TODO list:"
    mapM_ putTodo (zip [0..] todos)
    command <- getLine
    interpret command todos

interpret :: String -> [String] -> IO ()
interpret ('+':' ':todo) todos = prompt (todo:todos)
interpret ('-':' ':num ) todos =
    case delete (read num) todos of
        Nothing -> do
            putStrLn "No TODO entry matches the given number\
\hello"
            prompt todos
        Just todos' -> prompt todos'
interpret  "q"           todos = return ()
interpret  command       todos = do
    putStrLn ("Invalid command: `" ++ command ++ "`")
    prompt todos

delete :: Int -> [a] -> Maybe [a]
delete 0 (_:as) = Just as
delete n (a:as) = do
    as' <- delete (n - 1) as
    return (a:as')
delete _  []    = Nothing

main = do
    putStrLn "Commands:"
    putStrLn "+ <String> - Add a TODO entry"
    putStrLn "- <Int>    - Delete the numbered entry"
    putStrLn "q          - Quit"
    prompt []

I was moving the cursor around and didn't notice anything weird.

Maybe it's an issue with your config? Could you try a minimal config to reproduce the issue?

@yogan
Copy link
Author

yogan commented Mar 28, 2024

It does not seem to happen for all files, but I found one that cause me trouble:

module DNA (nucleotideCounts, Nucleotide (..)) where

import Data.List (group, sort)
import Data.Map (Map)
import qualified Data.Map as Map

data Nucleotide = A | C | G | T deriving (Eq, Ord, Show)

nucleotideCounts :: String -> Either String (Map Nucleotide Int)
nucleotideCounts dna = case counts of
  Just xs -> Right $ Map.fromList xs
  Nothing -> Left $ "invalid DNA strand" ++ dna
  where
    counts = mapM count $ group $ sort dna

    count :: String -> Maybe (Nucleotide, Int)
    count xs = case xs of
      [] -> Nothing
      x : _ -> case x of
        'A' -> Just (A, length xs)
        'C' -> Just (C, length xs)
        'G' -> Just (G, length xs)
        'T' -> Just (T, length xs)
        _ -> Nothing

image

   Error  08:06:29 AM msg_show.lua_error Error detected while processing CursorHold Autocommands for "<buffer=1>":
08:06:29 AM msg_show Error executing lua callback: ...-commentstring/lua/ts_context_commentstring/internal.lua:126: attempt to index local 'match' (a function value)
stack traceback:
	...-commentstring/lua/ts_context_commentstring/internal.lua:126: in function 'calculate_commentstring'
	...-commentstring/lua/ts_context_commentstring/internal.lua:86: in function 'update_commentstring'
	...-commentstring/lua/ts_context_commentstring/internal.lua:33: in function <...-commentstring/lua/ts_context_commentstring/internal.lua:32>

I'll try to recreate with a minimal config…

@yogan
Copy link
Author

yogan commented Mar 28, 2024

I tried to use the minimal config from here:
https://github.com/JoosepAlviste/nvim-ts-context-commentstring/blob/main/utils/minimal_init.lua

But this does not seem to load ts-context-commentstring, only treesitter.
Update: works just fine.

Indeed there are no issues with this minimal config, even with the problematic source file I posted in the comment above.
I'll try to dig deeper where the issues are coming from…

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants