close
Skip to content

Only index the buffer if the query needs it#1991

Merged
voodoos merged 2 commits into
ocaml:mainfrom
voodoos:refactor-indexing
Nov 7, 2025
Merged

Only index the buffer if the query needs it#1991
voodoos merged 2 commits into
ocaml:mainfrom
voodoos:refactor-indexing

Conversation

@voodoos
Copy link
Copy Markdown
Collaborator

@voodoos voodoos commented Nov 7, 2025

The refactor in #1990 and @liam923 's suggestion made it trivial to lazily index buffers.

Suggested-by: Liam Stevenson <lstevenson@janestreet.com>
@voodoos voodoos changed the title Only index the buffer if the query needs lit Only index the buffer if the query needs it Nov 7, 2025
Copy link
Copy Markdown
Contributor

@liam923 liam923 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Awesome thanks for this. I've done some testing and can verify that this gets a ~25% speedup in a ocamlmerlin single errors query on the file that initially motivated this change.

@voodoos voodoos merged commit 3589fc0 into ocaml:main Nov 7, 2025
8 of 10 checks passed
@liam923 liam923 mentioned this pull request Nov 7, 2025
voodoos added a commit to voodoos/opam-repository that referenced this pull request Dec 20, 2025
CHANGES:

Sat Dec 20 11:15:42 CET 2025

  + merlin binary
    - Fix a plethora of minor issues with the C code (ocaml/merlin#1998)
  + merlin library
    - Signature help should not appear on the function name (ocaml/merlin#1997)
    - Fix completion not working for inlined records labels (ocaml/merlin#1978, fixes ocaml/merlin#1977)
    - Perform buffer indexing only if the query requires it (ocaml/merlin#1990 and ocaml/merlin#1991)
    - Stop unnecessarily forcing substitutions when initializing short-paths graph (ocaml/merlin#1988)
    - Fix Mocaml.with_printer didn't update replacement_printer_doc (ocaml/merlin#2010)
  + test suite
    - Add a test to ensure the behavior showed in issue ocaml/merlin#1517 is no longer relevant (ocaml/merlin#1995)
    - Add a test to ensure the code fragment exhibited in issue ocaml/merlin#1118 no longer makes Merlin crash (ocaml/merlin#1996)
    - Add a test case illustrating how a snippet produces two unrelated errors in issue ocaml/merlin#2000. (ocaml/merlin#2003)
    - Add a test reproducing issue ocaml/merlin#1983 where `document` command which sometime concatenates consecutive variants and labels (ocaml/merlin#2005)
    - Signature-help should trigger on unfinished `let ... in` bindings (ocaml/merlin#2009)
voodoos added a commit to voodoos/opam-repository that referenced this pull request Apr 9, 2026
CHANGES:

Thu Apr 09 09:59:38 WAT 2026

  + merlin library
    - Implement new refactor-extract-region command for extracting region to a fresh let binding (warning: this feature is still experimental) (ocaml/merlin#1948)
    - Add "Other" variant to locate-types result (ocaml/merlin#2025)
    - Don't include `option` in locate-types result for optional parameters (ocaml/merlin#2027)
    - Fix record field autocompletion (ocaml/merlin#2028)
    - Signature help should not loop over the parameters once it is finished (ocaml/merlin#2023)
    - Fix bugs on signature help about labelled and optional parameters (ocaml/merlin#2032)
    - Add `-end-position` parameter for `enclosing` (ocaml/merlin#2029)
    - Signature help should appear even if the 'in' is not written (ocaml/merlin#2036)
    - Improve type enclosing behavior on various class and object related items
      (ocaml/merlin#2053)
  + merlin binary
    - Define PATH_MAX to 4096 if undefined (eg. hurd) (ocaml/merlin#2039)
  + test suite
    - Add a reproduction case for ocaml/merlin#1214, the issue has been resolved before (ocaml/merlin#2022)
    - Add reproduction case for ocaml/merlin#1763 but it is not failing anymore (ocaml/merlin#2021)
    - Add a test to reproduce [Locate command fails on multi-line type definitions](ocaml/merlin#1987) (ocaml/merlin#2020)
    - Add a regression test for issue ocaml/merlin#2019 (ocaml/merlin#2030)

merlin 5.6.1
Sat Dec 20 11:15:42 CET 2025

  + merlin binary
    - Fix a plethora of minor issues with the C code (ocaml/merlin#1998)
  + merlin library
    - Signature help should not appear on the function name (ocaml/merlin#1997)
    - Fix completion not working for inlined records labels (ocaml/merlin#1978, fixes ocaml/merlin#1977)
    - Perform buffer indexing only if the query requires it (ocaml/merlin#1990 and ocaml/merlin#1991)
    - Stop unnecessarily forcing substitutions when initializing short-paths graph (ocaml/merlin#1988)
    - Fix Mocaml.with_printer didn't update replacement_printer_doc (ocaml/merlin#2010)
  + test suite
    - Add a test to ensure the behavior showed in issue ocaml/merlin#1517 is no longer relevant (ocaml/merlin#1995)
    - Add a test to ensure the code fragment exhibited in issue ocaml/merlin#1118 no longer makes Merlin crash (ocaml/merlin#1996)
    - Add a test case illustrating how a snippet produces two unrelated errors in issue ocaml/merlin#2000. (ocaml/merlin#2003)
    - Add a test reproducing issue ocaml/merlin#1983 where `document` command which sometime concatenates consecutive variants and labels (ocaml/merlin#2005)
    - Signature-help should trigger on unfinished `let ... in` bindings (ocaml/merlin#2009)

merlin 5.6
Sat Oct 04 15:10:42 CEST 2025

  + merlin binary
    - Add `locate-types` command (ocaml/merlin#1951)
  + merlin library
    - Implement new refactor-extract-region command for extracting region to a fresh let binding (ocaml/merlin#1948)
    - Fix `merlin_reader` for OpenBSD (ocaml/merlin#1956)
    - Improve recovery of mutually recursive definitions (ocaml/merlin#1962, ocaml/merlin#1963, fixes ocaml/merlin#1953)
    - Support for OCaml 5.4 (ocaml/merlin#1974)
  + vim plugin
    - Fix error when `:MerlinOccurrencesProjectWide` fails to gather code previews (ocaml/merlin#1970)
  + test suite
    - Add more short-paths tests cases (ocaml/merlin#1904)
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.

2 participants