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

OCaml comment highlight is broken #9771

Closed
theteachr opened this issue Mar 1, 2024 · 4 comments · Fixed by #9800
Closed

OCaml comment highlight is broken #9771

theteachr opened this issue Mar 1, 2024 · 4 comments · Fixed by #9800
Labels
C-bug Category: This is a bug

Comments

@theteachr
Copy link
Contributor

theteachr commented Mar 1, 2024

Summary

image

Reproduction Steps

Open an OCaml source file with comments and notice that instead of the usual greyed out comment, the first bracket is tilted and the rest of the content is not grey.

Helix log

~/.cache/helix/helix.log
2024-03-01T09:36:59.963 helix_lsp::transport [ERROR] ocamllsp err <- "halting dune merlin process\n"
2024-03-01T09:36:59.963 helix_lsp::transport [ERROR] ocamllsp err <- "{ pid = pid 6924; initial_cwd = \"/Users/theteachr/Code/monopoly/deal\" }\n"
2024-03-01T09:36:59.963 helix_lsp::transport [ERROR] err: <- Other(failed to send a message to server

Caused by:
    channel closed)
2024-03-01T09:37:09.194 globset [DEBUG] glob converted to regex: Glob { glob: "*/Dockerfile*", re: "(?-u)^.*/Dockerfile.*$", opts: GlobOptions { case_insensitive: false, literal_separator: false, backslash_escape: true, empty_alternates: false }, tokens: Tokens([ZeroOrMore, Literal('/'), Literal('D'), Literal('o'), Literal('c'), Literal('k'), Literal('e'), Literal('r'), Literal('f'), Literal('i'), Literal('l'), Literal('e'), ZeroOrMore]) }
2024-03-01T09:37:09.194 globset [DEBUG] glob converted to regex: Glob { glob: "*/dockerfile*", re: "(?-u)^.*/dockerfile.*$", opts: GlobOptions { case_insensitive: false, literal_separator: false, backslash_escape: true, empty_alternates: false }, tokens: Tokens([ZeroOrMore, Literal('/'), Literal('d'), Literal('o'), Literal('c'), Literal('k'), Literal('e'), Literal('r'), Literal('f'), Literal('i'), Literal('l'), Literal('e'), ZeroOrMore]) }
2024-03-01T09:37:09.194 globset [DEBUG] glob converted to regex: Glob { glob: "*/Containerfile*", re: "(?-u)^.*/Containerfile.*$", opts: GlobOptions { case_insensitive: false, literal_separator: false, backslash_escape: true, empty_alternates: false }, tokens: Tokens([ZeroOrMore, Literal('/'), Literal('C'), Literal('o'), Literal('n'), Literal('t'), Literal('a'), Literal('i'), Literal('n'), Literal('e'), Literal('r'), Literal('f'), Literal('i'), Literal('l'), Literal('e'), ZeroOrMore]) }
2024-03-01T09:37:09.194 globset [DEBUG] glob converted to regex: Glob { glob: "*/containerfile*", re: "(?-u)^.*/containerfile.*$", opts: GlobOptions { case_insensitive: false, literal_separator: false, backslash_escape: true, empty_alternates: false }, tokens: Tokens([ZeroOrMore, Literal('/'), Literal('c'), Literal('o'), Literal('n'), Literal('t'), Literal('a'), Literal('i'), Literal('n'), Literal('e'), Literal('r'), Literal('f'), Literal('i'), Literal('l'), Literal('e'), ZeroOrMore]) }
2024-03-01T09:37:09.194 globset [DEBUG] glob converted to regex: Glob { glob: "*/BUILD.*", re: "(?-u)^.*/BUILD\\..*$", opts: GlobOptions { case_insensitive: false, literal_separator: false, backslash_escape: true, empty_alternates: false }, tokens: Tokens([ZeroOrMore, Literal('/'), Literal('B'), Literal('U'), Literal('I'), Literal('L'), Literal('D'), Literal('.'), ZeroOrMore]) }
2024-03-01T09:37:09.194 globset [DEBUG] glob converted to regex: Glob { glob: "*/.env.*", re: "(?-u)^.*/\\.env\\..*$", opts: GlobOptions { case_insensitive: false, literal_separator: false, backslash_escape: true, empty_alternates: false }, tokens: Tokens([ZeroOrMore, Literal('/'), Literal('.'), Literal('e'), Literal('n'), Literal('v'), Literal('.'), ZeroOrMore]) }
2024-03-01T09:37:09.194 globset [DEBUG] glob converted to regex: Glob { glob: "*/.envrc.*", re: "(?-u)^.*/\\.envrc\\..*$", opts: GlobOptions { case_insensitive: false, literal_separator: false, backslash_escape: true, empty_alternates: false }, tokens: Tokens([ZeroOrMore, Literal('/'), Literal('.'), Literal('e'), Literal('n'), Literal('v'), Literal('r'), Literal('c'), Literal('.'), ZeroOrMore]) }
2024-03-01T09:37:09.194 globset [DEBUG] glob converted to regex: Glob { glob: "*/Jenkinsfile.*", re: "(?-u)^.*/Jenkinsfile\\..*$", opts: GlobOptions { case_insensitive: false, literal_separator: false, backslash_escape: true, empty_alternates: false }, tokens: Tokens([ZeroOrMore, Literal('/'), Literal('J'), Literal('e'), Literal('n'), Literal('k'), Literal('i'), Literal('n'), Literal('s'), Literal('f'), Literal('i'), Literal('l'), Literal('e'), Literal('.'), ZeroOrMore]) }
2024-03-01T09:37:09.194 globset [DEBUG] built glob set; 1 literals, 0 basenames, 0 extensions, 0 prefixes, 113 suffixes, 2 required extensions, 8 regexes
2024-03-01T09:37:09.197 helix_view::clipboard [DEBUG] Using tmux to interact with the system clipboard
2024-03-01T09:37:09.275 helix_view::editor [DEBUG] editor status: Loaded 1 file.
2024-03-01T09:37:09.275 helix_lsp::transport [INFO] ocamllsp -> {"jsonrpc":"2.0","method":"initialize","params":{"capabilities":{"general":{"positionEncodings":["utf-8","utf-32","utf-16"]},"textDocument":{"codeAction":{"codeActionLiteralSupport":{"codeActionKind":{"valueSet":["","quickfix","refactor","refactor.extract","refactor.inline","refactor.rewrite","source","source.organizeImports"]}},"dataSupport":true,"disabledSupport":true,"isPreferredSupport":true,"resolveSupport":{"properties":["edit","command"]}},"completion":{"completionItem":{"deprecatedSupport":true,"insertReplaceSupport":true,"resolveSupport":{"properties":["documentation","detail","additionalTextEdits"]},"snippetSupport":true,"tagSupport":{"valueSet":[1]}},"completionItemKind":{}},"hover":{"contentFormat":["markdown"]},"inlayHint":{"dynamicRegistration":false},"publishDiagnostics":{"versionSupport":true},"rename":{"dynamicRegistration":false,"honorsChangeAnnotations":false,"prepareSupport":true},"signatureHelp":{"signatureInformation":{"activeParameterSupport":true,"documentationFormat":["markdown"],"parameterInformation":{"labelOffsetSupport":true}}}},"window":{"workDoneProgress":true},"workspace":{"applyEdit":true,"configuration":true,"didChangeConfiguration":{"dynamicRegistration":false},"didChangeWatchedFiles":{"dynamicRegistration":true,"relativePatternSupport":false},"executeCommand":{"dynamicRegistration":false},"fileOperations":{"didRename":true,"willRename":true},"inlayHint":{"refreshSupport":false},"symbol":{"dynamicRegistration":false},"workspaceEdit":{"documentChanges":true,"failureHandling":"abort","normalizesLineEndings":false,"resourceOperations":["create","rename","delete"]},"workspaceFolders":true}},"clientInfo":{"name":"helix","version":"23.10 (44db2593)"},"processId":6950,"rootPath":"/Users/theteachr/Code/monopoly/deal","rootUri":"file:///Users/theteachr/Code/monopoly/deal","workspaceFolders":[{"name":"deal","uri":"file:///Users/theteachr/Code/monopoly/deal"}]},"id":0}
2024-03-01T09:37:09.275 helix_tui::backend::crossterm [DEBUG] The keyboard enhancement protocol is not supported in this terminal (checked in 94µs)
2024-03-01T09:37:09.282 helix_lsp::transport [INFO] ocamllsp <- {"id":0,"jsonrpc":"2.0","result":{"capabilities":{"codeActionProvider":{"codeActionKinds":["quickfix","refactor.inline","construct","destruct","inferred_intf","put module name in identifiers","remove module name from identifiers","remove type annotation","type-annotate"]},"codeLensProvider":{"resolveProvider":false},"completionProvider":{"resolveProvider":true,"triggerCharacters":[".","#"]},"declarationProvider":true,"definitionProvider":true,"documentFormattingProvider":true,"documentHighlightProvider":true,"documentSymbolProvider":true,"executeCommandProvider":{"commands":["dune/promote"]},"experimental":{"ocamllsp":{"interfaceSpecificLangId":true,"handleSwitchImplIntf":true,"handleInferIntf":true,"handleTypedHoles":true,"handleWrappingAstNode":true,"diagnostic_promotions":true,"handleHoverExtended":true}},"foldingRangeProvider":true,"hoverProvider":true,"positionEncoding":"utf-8","referencesProvider":true,"renameProvider":{"prepareProvider":true},"selectionRangeProvider":true,"semanticTokensProvider":{"full":{"delta":true},"legend":{"tokenModifiers":["declaration","definition","readonly","static","deprecated","abstract","async","modification","documentation","defaultLibrary"],"tokenTypes":["namespace","type","class","enum","interface","struct","typeParameter","parameter","variable","property","enumMember","event","function","method","macro","keyword","modifier","comment","string","number","regexp","operator","decorator"]}},"signatureHelpProvider":{"triggerCharacters":[" ","~","?",":","("]},"textDocumentSync":{"change":2,"openClose":true,"save":{"includeText":false},"willSave":false,"willSaveWaitUntil":false},"typeDefinitionProvider":true,"workspace":{"workspaceFolders":{"changeNotifications":true,"supported":true}},"workspaceSymbolProvider":true},"serverInfo":{"name":"ocamllsp","version":"1.17.0"}}}
2024-03-01T09:37:09.282 helix_lsp::transport [INFO] ocamllsp <- {"capabilities":{"codeActionProvider":{"codeActionKinds":["quickfix","refactor.inline","construct","destruct","inferred_intf","put module name in identifiers","remove module name from identifiers","remove type annotation","type-annotate"]},"codeLensProvider":{"resolveProvider":false},"completionProvider":{"resolveProvider":true,"triggerCharacters":[".","#"]},"declarationProvider":true,"definitionProvider":true,"documentFormattingProvider":true,"documentHighlightProvider":true,"documentSymbolProvider":true,"executeCommandProvider":{"commands":["dune/promote"]},"experimental":{"ocamllsp":{"diagnostic_promotions":true,"handleHoverExtended":true,"handleInferIntf":true,"handleSwitchImplIntf":true,"handleTypedHoles":true,"handleWrappingAstNode":true,"interfaceSpecificLangId":true}},"foldingRangeProvider":true,"hoverProvider":true,"positionEncoding":"utf-8","referencesProvider":true,"renameProvider":{"prepareProvider":true},"selectionRangeProvider":true,"semanticTokensProvider":{"full":{"delta":true},"legend":{"tokenModifiers":["declaration","definition","readonly","static","deprecated","abstract","async","modification","documentation","defaultLibrary"],"tokenTypes":["namespace","type","class","enum","interface","struct","typeParameter","parameter","variable","property","enumMember","event","function","method","macro","keyword","modifier","comment","string","number","regexp","operator","decorator"]}},"signatureHelpProvider":{"triggerCharacters":[" ","~","?",":","("]},"textDocumentSync":{"change":2,"openClose":true,"save":{"includeText":false},"willSave":false,"willSaveWaitUntil":false},"typeDefinitionProvider":true,"workspace":{"workspaceFolders":{"changeNotifications":true,"supported":true}},"workspaceSymbolProvider":true},"serverInfo":{"name":"ocamllsp","version":"1.17.0"}}
2024-03-01T09:37:09.282 helix_lsp::transport [INFO] ocamllsp -> {"jsonrpc":"2.0","method":"initialized","params":{}}
2024-03-01T09:37:09.282 helix_term::application [DEBUG] received editor event: LanguageServerMessage((0, Notification(Notification { jsonrpc: None, method: "initialized", params: None })))
2024-03-01T09:37:09.282 helix_lsp::transport [INFO] ocamllsp -> {"jsonrpc":"2.0","method":"textDocument/didOpen","params":{"textDocument":{"languageId":"ocaml","text":"module Dual = struct\n  type chosen =\n    | Left\n    | Right\n  [@@deriving show]\n\n  type t = {\n    colors : Color.t * Color.t;\n    used : chosen;\n  }\n  [@@deriving show]\n\n  let of_colors colors = { colors; used = Left }\n\n  let display { colors = lcolor, rcolor; used } =\n    let open Color in\n    let open Printf in\n    match used with\n    | Left -> sprintf \"(%s) %s\" (display lcolor) (display rcolor)\n    | Right -> sprintf \"%s (%s)\" (display lcolor) (display rcolor)\nend\n\nmodule Action = struct\n  type building =\n    | Hotel\n    | House\n  [@@deriving show]\n\n  type t =\n    | Birthday\n    | Debt_collector\n    | Deal_breaker\n    | Double_the_rent\n    | Forced_deal\n    | Building of building\n    | Just_say_no\n    | Pass_go\n    | Sly_deal\n  [@@deriving show]\n\n  let value = function\n    | Birthday -> 2\n    | Debt_collector -> 3\n    | Deal_breaker -> 5\n    | Double_the_rent -> 1\n    | Forced_deal -> 3\n    | Building House -> 3\n    | Building Hotel -> 4\n    | Just_say_no -> 4\n    | Pass_go -> 1\n    | Sly_deal -> 3\n\n  let building_rent = function Hotel -> 4 | House -> 3\n\n  let name = function\n    | Birthday -> \"BIRTHDAY\"\n    | Debt_collector -> \"DEBT COLLECTOR\"\n    | Deal_breaker -> \"DEAL BREAKER\"\n    | Double_the_rent -> \"DOUBLE THE RENT\"\n    | Forced_deal -> \"FORCED DEAL\"\n    | Building House -> \"HOUSE\"\n    | Building Hotel -> \"HOTEL\"\n    | Just_say_no -> \"JUST SAY NO\"\n    | Pass_go -> \"PASS GO\"\n    | Sly_deal -> \"SLY DEAL\"\nend\n\nmodule Money = struct\n  (* TODO: Rent Cards in the bank\n     Rent Cards can also be banked. Decide whether to add a variant here or\n     move the [Rent] module inside [Action]. *)\n  type t =\n    | Money of int\n    | Action of Action.t\n  [@@deriving show]\n\n  let value = function\n    | Money value -> value\n    | Action action -> Action.value action\n\n  let display = function\n    | Money value -> Printf.sprintf \"(%d) Money\" value\n    | Action action ->\n        Printf.sprintf \"(%d) %s\" (Action.value action) (Action.name action)\nend\n\nmodule Property = struct\n  type t =\n    | Simple of Color.t * string\n    | Dual of Dual.t * int\n    | Wild of Color.t\n  [@@deriving show]\n\n  let value = function\n    | Simple (color, _) -> Color.value color\n    | Dual (_, value) -> value\n    | Wild _ -> 0\n\n  let name = function\n    | Simple (_, name) -> name\n    | Dual _ | Wild _ -> \"Wild Card\"\n\n  let color = function\n    | Simple (color, _) -> color\n    | Dual ({ colors = lcolor, rcolor; used }, _) -> (\n        match used with Left -> lcolor | Right -> rcolor)\n    | Wild color -> color\n\n  let display = function\n    | Simple (color, name) ->\n        let open Color in\n        Printf.sprintf \"(%d) %s %s\" (value color) (display color) name\n    | Dual ({ colors = a, b; _ }, value) ->\n        Printf.sprintf \"(%d) %s%s Wild Property\" value (Color.display a)\n          (Color.display b)\n    | Wild _ -> Printf.sprintf \"(0) Wild Property\"\n\n  module Set = struct\n    (* FIXME: Invalid state\n       [ ([], [ Action.House ]) ] is an invalid state. We can't have buildings\n       on top of incomplete sets. (GADT?) *)\n\n    (* FIXME: Invalid state\n       [ ([ Simple (Color.Blue, \"PARK PLACE\"), Wild Color.Black ], []) ] can't\n       happen. *)\n    type nonrec t = t list * Action.building list\n\n    let rents = function\n      | Color.Black -> [| 1; 2; 3; 4 |]\n      | Blue -> [| 3; 8 |]\n      | Brown -> [| 1; 2 |]\n      | Green -> [| 2; 4; 7 |]\n      | Magenta -> [| 1; 2; 4 |]\n      | Orange -> [| 1; 3; 5 |]\n      | Red -> [| 2; 3; 6 |]\n      | Sky_blue -> [| 1; 2; 3 |]\n      | Turquoise -> [| 1; 2 |]\n      | Yellow -> [| 2; 4; 6 |]\n\n    let create () = ([], [])\n\n    let add_property property (properties, buildings) =\n      (property :: properties, buildings)\n\n    let add_building building (properties, buildings) =\n      (properties, building :: buildings)\n\n    let is_full (properties, _) =\n      match properties with\n      | [] -> false\n      | property :: _ ->\n          List.length properties = Array.length (rents @@ color property)\n  end\n\n  let simple color name = Simple (color, name)\n  let dual colors value = Dual (Dual.of_colors colors, value)\n  let wild color = Wild color\nend\n\nmodule Rent = struct\n  type colors =\n    | Dual of Dual.t\n    | Wild\n  [@@deriving show]\n\n  type t = {\n    value : int;\n    colors : colors;\n  }\n  [@@deriving show]\n\n  let value { value; _ } = value\n  let dual colors value = { value; colors = Dual (Dual.of_colors colors) }\n  let wild = { value = 3; colors = Wild }\n\n  let display { value; colors } =\n    let suffix =\n      match colors with\n      | Dual { colors = a, b; _ } ->\n          Printf.sprintf \"%s%s Rent\" (Color.display a) (Color.display b)\n      | Wild -> \"Wild Rent\"\n    in\n    Printf.sprintf \"(%d) %s\" value suffix\nend\n\ntype t =\n  | Money of Money.t\n  | Property of Property.t\n  | Action of Action.t\n  | Rent of Rent.t\n[@@deriving show]\n\nlet property color name = Property (Property.simple color name)\nlet money value = Money (Money.Money value)\nlet action a = Action a\nlet rent colors value = Rent (Rent.dual colors value)\nlet wild_rent = Rent Rent.wild\n\nlet display = function\n  | Money card -> Printf.sprintf \"(%d) Money\" (Money.value card)\n  | Property card -> Property.display card\n  | Action card -> Action.(Printf.sprintf \"(%d) %s\" (value card) (name card))\n  | Rent card -> Rent.display card\n","uri":"file:///Users/theteachr/Code/monopoly/deal/lib/card.ml","version":0}}}
2024-03-01T09:37:09.317 helix_term::application [DEBUG] received editor event: Redraw
2024-03-01T09:37:09.449 helix_term::application [DEBUG] received editor event: IdleTimer
2024-03-01T09:37:09.604 helix_lsp::transport [INFO] ocamllsp <- {"params":{"diagnostics":[],"uri":"file:///Users/theteachr/Code/monopoly/deal/lib/card.ml"},"method":"textDocument/publishDiagnostics","jsonrpc":"2.0"}
2024-03-01T09:37:09.604 helix_term::application [DEBUG] received editor event: LanguageServerMessage((0, Notification(Notification { jsonrpc: Some(V2), method: "textDocument/publishDiagnostics", params: Map({"diagnostics": Array [], "uri": String("file:///Users/theteachr/Code/monopoly/deal/lib/card.ml")}) })))
2024-03-01T09:37:09.639 helix_term::application [DEBUG] received editor event: Redraw
2024-03-01T09:37:11.855 helix_term::application [DEBUG] received editor event: IdleTimer
2024-03-01T09:37:11.895 regex_cursor::util::prefilter [DEBUG] prefixes (len=Some(1), exact=true) extracted before optimization: Seq[E("T")]
2024-03-01T09:37:11.895 regex_cursor::util::prefilter [DEBUG] prefixes (len=Some(1), exact=true) extracted after optimization: Seq[E("T")]
2024-03-01T09:37:11.895 regex_cursor::engines::meta::strategy [DEBUG] trying to bypass regex engine by creating prefilter from 1 literals: [E("T")]
2024-03-01T09:37:11.895 regex_cursor::engines::meta::strategy [DEBUG] found that the regex can be broken down to a literal search, avoiding the regex engine entirely
2024-03-01T09:37:12.010 regex_cursor::util::prefilter [DEBUG] prefixes (len=Some(1), exact=true) extracted before optimization: Seq[E("TO")]
2024-03-01T09:37:12.010 regex_cursor::util::prefilter [DEBUG] prefixes (len=Some(1), exact=true) extracted after optimization: Seq[E("TO")]
2024-03-01T09:37:12.010 regex_cursor::engines::meta::strategy [DEBUG] trying to bypass regex engine by creating prefilter from 1 literals: [E("TO")]
2024-03-01T09:37:12.010 regex_cursor::engines::meta::strategy [DEBUG] found that the regex can be broken down to a literal search, avoiding the regex engine entirely
2024-03-01T09:37:12.086 regex_cursor::util::prefilter [DEBUG] prefixes (len=Some(1), exact=true) extracted before optimization: Seq[E("TOD")]
2024-03-01T09:37:12.087 regex_cursor::util::prefilter [DEBUG] prefixes (len=Some(1), exact=true) extracted after optimization: Seq[E("TOD")]
2024-03-01T09:37:12.087 regex_cursor::engines::meta::strategy [DEBUG] trying to bypass regex engine by creating prefilter from 1 literals: [E("TOD")]
2024-03-01T09:37:12.087 regex_cursor::engines::meta::strategy [DEBUG] found that the regex can be broken down to a literal search, avoiding the regex engine entirely
2024-03-01T09:37:12.205 regex_cursor::util::prefilter [DEBUG] prefixes (len=Some(1), exact=true) extracted before optimization: Seq[E("TODO")]
2024-03-01T09:37:12.205 regex_cursor::util::prefilter [DEBUG] prefixes (len=Some(1), exact=true) extracted after optimization: Seq[E("TODO")]
2024-03-01T09:37:12.205 regex_cursor::engines::meta::strategy [DEBUG] trying to bypass regex engine by creating prefilter from 1 literals: [E("TODO")]
2024-03-01T09:37:12.205 regex_cursor::engines::meta::strategy [DEBUG] found that the regex can be broken down to a literal search, avoiding the regex engine entirely
2024-03-01T09:37:13.209 regex_cursor::util::prefilter [DEBUG] prefixes (len=Some(1), exact=true) extracted before optimization: Seq[E("TODO")]
2024-03-01T09:37:13.209 regex_cursor::util::prefilter [DEBUG] prefixes (len=Some(1), exact=true) extracted after optimization: Seq[E("TODO")]
2024-03-01T09:37:13.209 regex_cursor::engines::meta::strategy [DEBUG] trying to bypass regex engine by creating prefilter from 1 literals: [E("TODO")]
2024-03-01T09:37:13.209 regex_cursor::engines::meta::strategy [DEBUG] found that the regex can be broken down to a literal search, avoiding the regex engine entirely
2024-03-01T09:37:15.266 helix_term::application [DEBUG] received editor event: IdleTimer
2024-03-01T09:37:16.125 helix_term::application [DEBUG] received editor event: IdleTimer
2024-03-01T09:37:16.652 helix_term::commands::typed [DEBUG] quitting...
2024-03-01T09:37:16.786 helix_term::application [DEBUG] received editor event: IdleTimer
2024-03-01T09:37:16.960 helix_term::commands::typed [DEBUG] quitting...
2024-03-01T09:37:16.960 helix_view::document [DEBUG] id 1 modified - last saved: 0, current: 0
2024-03-01T09:37:16.960 helix_term::job [DEBUG] waiting on jobs...
2024-03-01T09:37:16.960 helix_term::job [DEBUG] waiting on jobs...
2024-03-01T09:37:16.960 helix_lsp::file_event [DEBUG] Removing LSP client: 0
2024-03-01T09:37:16.960 helix_lsp::transport [INFO] ocamllsp -> {"jsonrpc":"2.0","method":"shutdown","id":1}
2024-03-01T09:37:16.960 helix_lsp::transport [INFO] ocamllsp <- {"id":1,"jsonrpc":"2.0","result":null}
2024-03-01T09:37:16.961 helix_lsp::transport [INFO] ocamllsp <- null
2024-03-01T09:37:16.961 helix_lsp::transport [INFO] ocamllsp -> {"jsonrpc":"2.0","method":"exit"}
2024-03-01T09:37:16.961 helix_lsp::transport [ERROR] ocamllsp err <- "halting dune merlin process\n"
2024-03-01T09:37:16.961 helix_lsp::transport [ERROR] ocamllsp err <- "{ pid = pid 6952; initial_cwd = \"/Users/theteachr/Code/monopoly/deal\" }\n"

Platform

macOS

Terminal Emulator

iTerm

Installation Method

source

Helix Version

helix 23.10 (44db259)

@theteachr theteachr added the C-bug Category: This is a bug label Mar 1, 2024
@archseer
Copy link
Member

archseer commented Mar 1, 2024

The rest of the content is grey, but TODO: is a highlighted comment keyword

@gabydd
Copy link
Member

gabydd commented Mar 1, 2024

I have seen this too, I would clarify the comment is orange/yellow only the leading bracket is gray, the leading bracket and the comment should all be the same color, one thing I notice is this seems to be regression since the previous release

@AlexanderBrevig
Copy link
Contributor

From a discussion on Element this seems to be an issue across all languages.

Introduced here:
https://github.com/helix-editor/helix/pull/9253/files (thanks cotneit).

@AlexanderBrevig
Copy link
Contributor

Fixed in #9800

[
"("
")"
] @punctuation.bracket

Is no longer needed.

https://github.com/stsewd/tree-sitter-comment/blob/aefcc2813392eb6ffe509aa0fc8b4e9b57413ee1/grammar.js#L75-L78

archseer pushed a commit that referenced this issue Mar 8, 2024
* fix: close #9771 update OCaml

* fix: no longer match on ( ) as the underlying grammar handles these

* fix: implement excellent corrections from review

* fix: module -> namespace to match theme scopes
shortc pushed a commit to shortc/helix that referenced this issue Mar 31, 2024
…tor#9800)

* fix: close helix-editor#9771 update OCaml

* fix: no longer match on ( ) as the underlying grammar handles these

* fix: implement excellent corrections from review

* fix: module -> namespace to match theme scopes
postsolar pushed a commit to postsolar/helix that referenced this issue Apr 4, 2024
…tor#9800)

* fix: close helix-editor#9771 update OCaml

* fix: no longer match on ( ) as the underlying grammar handles these

* fix: implement excellent corrections from review

* fix: module -> namespace to match theme scopes
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
C-bug Category: This is a bug
Projects
None yet
Development

Successfully merging a pull request may close this issue.

4 participants