-
Notifications
You must be signed in to change notification settings - Fork 121
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
Wrong locations in semantic highlighting when using preprocessors #1034
Milestone
Comments
Fixed by #1049 |
rgrinberg
added a commit
to rgrinberg/opam-repository
that referenced
this issue
Jun 18, 2023
CHANGES: ## Fixes - Disable code lens by default. The support can be re-enabled by explicitly setting it in the configuration. (ocaml/ocaml-lsp#1134) - Fix initilization of `ocamlformat-rpc` in some edge cases when ocamlformat is initialized concurrently (ocaml/ocaml-lsp#1132) - Kill unnecessary `$ dune ocaml-merlin` with SIGTERM rather than SIGKILL (ocaml/ocaml-lsp#1124) - Refactor comment parsing to use `odoc-parser` and `cmarkit` instead of `octavius` and `omd` (ocaml/ocaml-lsp#1088) This allows users who migrated to omd 2.X to install ocaml-lsp-server in the same opam switch. We also slightly improved markdown generation support and fixed a couple in the generation of inline heading and module types. - Allow opening documents that were already open. This is a workaround for neovim's lsp client (ocaml/ocaml-lsp#1067) - Disable type annotation for functions (ocaml/ocaml-lsp#1054) - Respect codeActionLiteralSupport capability (ocaml/ocaml-lsp#1046) - Fix a document syncing issue when utf-16 is the position encoding (ocaml/ocaml-lsp#1004) - Disable "Type-annotate" action for code that is already annotated. ([ocaml/ocaml-lsp#1037](ocaml/ocaml-lsp#1037)), fixes [ocaml/ocaml-lsp#1036](ocaml/ocaml-lsp#1036) - Fix semantic highlighting of long identifiers when using preprocessors ([ocaml/ocaml-lsp#1049](ocaml/ocaml-lsp#1049), fixes [ocaml/ocaml-lsp#1034](ocaml/ocaml-lsp#1034)) - Fix the type of DocumentSelector in cram document registration (ocaml/ocaml-lsp#1068) - Accept the `--clientProcessId` command line argument. (ocaml/ocaml-lsp#1074) - Accept `--port` as a synonym for `--socket`. (ocaml/ocaml-lsp#1075) - Fix connecting to dune rpc on Windows. (ocaml/ocaml-lsp#1080) ## Features - Add "Remove type annotation" code action. (ocaml/ocaml-lsp#1039) - Support settings through `didChangeConfiguration` notification (ocaml/ocaml-lsp#1103) - Add "Extract local" and "Extract function" code actions. (ocaml/ocaml-lsp#870) - Depend directly on `merlin-lib` 4.9 (ocaml/ocaml-lsp#1070)
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Hello!
I was using ocaml-lsp with cppo, a C-style preprocessor for OCaml while I noticed the semantic highlighting in files containing cppo code was broken:
After some investigation in the ocaml-lsp code I found this PR #932 that corrected the function
lident
ocaml-lsp/ocaml-lsp-server/src/semantic_highlighting.ml
Line 354 in 45b3198
In order to remember spaces that may appear in long identifiers, it ignores the long identifier object given as a parameter (that already has spaces trimmed) and instead reads again the source
M.source
using the functionsource_excerpt
ocaml-lsp/ocaml-lsp-server/src/semantic_highlighting.ml
Line 341 in 45b3198
The problem is that, while using preprocessor directives, the location of the long identifier given as an argument is invalid (the location is specific to the code already preprocessed). Then the semantic highlighting returned is invalid.
I have tested to add to the
lident
function some logs after computing the source excerpt:And here is an extract of the result:
I am not sure what could be acceptable to do. Would it be possible to keep track of the source location? Or to keep the input text in the long identifier structure?
Thank you for reading!
PS: Maybe you have some clues @ulugbekna since you did the PR? :)
The text was updated successfully, but these errors were encountered: