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

[BUG] Running ocamlmerlin-server.exe does not allow moving directory under Windows #1474

Closed
nojb opened this issue May 31, 2022 · 4 comments · Fixed by #1569
Closed

[BUG] Running ocamlmerlin-server.exe does not allow moving directory under Windows #1474

nojb opened this issue May 31, 2022 · 4 comments · Fixed by #1569

Comments

@nojb
Copy link
Contributor

nojb commented May 31, 2022

After one starts using merlin to edit a file on Emacs under Windows it is not possible to move the containing directory around, which is quite inconvenient. Closing emacs does not solve the problem because the merlin process continues to run in the background. The only solution is to kill the merlin process running in the background.

image

  • Why not shut down the merlin background process when closing Emacs?
  • Typically this problems happens because a program (Merlin in this case) keeps open handles to the directory or some file within it; if this is indeed the case, perhaps this situation can be avoided? For example even if one is editing a file in a directory with Emacs, that does not keep the containing directory from being renamed.

To reproduce

  1. mkdir foo
  2. emacs foo/foo.ml
  3. Perform some operation that invokes merlin on the foo.ml buffer
  4. mv foo foo2 in the terminal (fails)
@nojb
Copy link
Contributor Author

nojb commented May 31, 2022

Also, am not sure if the problem is the merlin server process or the Dune process that is started in the background (or both).

@nojb
Copy link
Contributor Author

nojb commented Jun 28, 2022

I did some more digging: it seems the problem is the ocamlmerlin-server.exe process which keeps an open handle to the directory where the file being edited is found.

@nojb nojb changed the title [BUG] Merlin on Windows Emacs does not allow moving directory [BUG] Running ocamlmerlin-server.exe does not allow moving directory under Windows Jun 28, 2022
@voodoos
Copy link
Collaborator

voodoos commented Jun 29, 2022

@let-def ?

@nojb
Copy link
Contributor Author

nojb commented Feb 21, 2023

This will be fixed in #1569

voodoos added a commit to voodoos/opam-repository that referenced this issue Feb 24, 2023
CHANGES:

Fri Feb 24 16:55:42 CEST 2023

  + merlin binary
    - Recognize OCaml 5.0 cmi magic number in compiler version mismatch message
      (ocaml/merlin#1554, fixes ocaml/merlin#1553)
    - Upgrade Merlin from the RC2 to the stable 5.0.0 compiler release (ocaml/merlin#1559,
      fixes ocaml/merlin#1558)
    - Improve type-enclosing behaviour when used on records' labels (ocaml/merlin#1565,
      fixes ocaml/merlin#1564)
    - Restore compatibility with the compiler's command line by accepting the
      `-safe-string` flag as a no-op instead of rejecting it (ocaml/merlin#1544, fixes
      ocaml/merlin#1518)
    - Traverse aliases when jumping to declaration. This matches
      jump-to-definition's behavior (ocaml/merlin#1563)
    - Improve locate's behavior in various ill-typed expressions (ocaml/merlin#1546, fixes
      ocaml/merlin#1567 and partially ocaml/merlin#1543)
    - Correctly traverse patterns when looking for docs in the typedtree (ocaml/merlin#1572)
    - Get documentation when the declaration or definition is selected (ocaml/merlin#1542,
      fixes ocaml/merlin#1540)
    - On Windows, change to a harmless directory when launching server to avoid
      locking down current directory (ocaml/merlin#1569, fixes ocaml/merlin#1474)
  + editor modes
    - emacs: Fix misuse of `eq` comparison (ocaml/merlin#1549, @mattiase)
    - emacs: xref works from context menus; better highlighting of xref matches;
      xref recognises operators and binding operators at the cursor position;
      bad locations are filtered out (ocaml/merlin#1385, fixes ocaml/merlin#1410, @mattiase)
  + test suite
    - Add a test for incorrect alert defaults (ocaml/merlin#1559)
    - Add multiple tests for locate over ill-typed expressions (ocaml/merlin#1546)
    - Add non-regression tests for other fixes in this release
voodoos added a commit to voodoos/opam-repository that referenced this issue Feb 24, 2023
CHANGES:

Fri Feb 24 16:55:42 CEST 2023

  + merlin binary
    - Update internal typer to match OCaml 4.14.1 release (ocaml/merlin#1557)
    - Improve type-enclosing behaviour when used on records' labels (ocaml/merlin#1565,
      fixes ocaml/merlin#1564)
    - Restore compatibility with some OCaml compiler's debug flags that were
      incorrectly rejected by Merlin (ocaml/merlin#1556)
    - Traverse aliases when jumping to declaration. This matches
      jump-to-definition's behavior (ocaml/merlin#1563)
    - Improve locate's behavior in various ill-typed expressions (ocaml/merlin#1546, fixes
      ocaml/merlin#1567 and partially ocaml/merlin#1543)
    - Correctly traverse patterns when looking for docs in the typedtree (ocaml/merlin#1572)
    - Get documentation when the declaration or definition is selected (ocaml/merlin#1542,
      fixes ocaml/merlin#1540)
    - On Windows, change to a harmless directory when launching server to avoid
      locking down current directory (ocaml/merlin#1569, fixes ocaml/merlin#1474)
  + test suite
    - Add multiple tests for locate over ill-typed expressions (ocaml/merlin#1546)
    - Add non-regression tests for other fixes in this release
voodoos added a commit to voodoos/opam-repository that referenced this issue Feb 24, 2023
CHANGES:

Fri Feb 24 16:55:42 CEST 2023

  + merlin binary
    - Recognize OCaml 5.0 cmi magic number in compiler version mismatch message
      (ocaml/merlin#1554, fixes ocaml/merlin#1553)
    - Upgrade Merlin from the RC2 to the stable 5.0.0 compiler release (ocaml/merlin#1559,
      fixes ocaml/merlin#1558)
    - Improve type-enclosing behaviour when used on records' labels (ocaml/merlin#1565,
      fixes ocaml/merlin#1564)
    - Restore compatibility with the compiler's command line by accepting the
      `-safe-string` flag as a no-op instead of rejecting it (ocaml/merlin#1544, fixes
      ocaml/merlin#1518)
    - Traverse aliases when jumping to declaration. This matches
      jump-to-definition's behavior (ocaml/merlin#1563)
    - Improve locate's behavior in various ill-typed expressions (ocaml/merlin#1546, fixes
      ocaml/merlin#1567 and partially ocaml/merlin#1543)
    - Correctly traverse patterns when looking for docs in the typedtree (ocaml/merlin#1572)
    - Get documentation when the declaration or definition is selected (ocaml/merlin#1542,
      fixes ocaml/merlin#1540)
    - On Windows, change to a harmless directory when launching server to avoid
      locking down current directory (ocaml/merlin#1569, fixes ocaml/merlin#1474)
  + editor modes
    - emacs: Fix misuse of `eq` comparison (ocaml/merlin#1549, @mattiase)
    - emacs: xref works from context menus; better highlighting of xref matches;
      xref recognises operators and binding operators at the cursor position;
      bad locations are filtered out (ocaml/merlin#1385, fixes ocaml/merlin#1410, @mattiase)
  + test suite
    - Add a test for incorrect alert defaults (ocaml/merlin#1559)
    - Add multiple tests for locate over ill-typed expressions (ocaml/merlin#1546)
    - Add non-regression tests for other fixes in this release
voodoos added a commit to voodoos/opam-repository that referenced this issue Feb 24, 2023
CHANGES:

Fri Feb 24 16:55:42 CEST 2023

  + merlin binary
    - Update internal typer to match OCaml 4.14.1 release (ocaml/merlin#1557)
    - Improve type-enclosing behaviour when used on records' labels (ocaml/merlin#1565,
      fixes ocaml/merlin#1564)
    - Restore compatibility with some OCaml compiler's debug flags that were
      incorrectly rejected by Merlin (ocaml/merlin#1556)
    - Traverse aliases when jumping to declaration. This matches
      jump-to-definition's behavior (ocaml/merlin#1563)
    - Improve locate's behavior in various ill-typed expressions (ocaml/merlin#1546, fixes
      ocaml/merlin#1567 and partially ocaml/merlin#1543)
    - Correctly traverse patterns when looking for docs in the typedtree (ocaml/merlin#1572)
    - Get documentation when the declaration or definition is selected (ocaml/merlin#1542,
      fixes ocaml/merlin#1540)
    - On Windows, change to a harmless directory when launching server to avoid
      locking down current directory (ocaml/merlin#1569, fixes ocaml/merlin#1474)
  + test suite
    - Add multiple tests for locate over ill-typed expressions (ocaml/merlin#1546)
    - Add non-regression tests for other fixes in this release
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 a pull request may close this issue.

2 participants