joaotavora / eglot

A client for Language Server Protocol servers
GNU General Public License v3.0
2.27k stars 200 forks source link

There is no flymake-run-in-place in flymake version "1.0.8" #500

Closed maruks closed 4 years ago

maruks commented 4 years ago

Eglot uses flymake version "1.0.8" which creates temporary haskell files in source directory.

see this: https://github.com/flymake/emacs-flymake/issues/32

Your flymake version doesn't have flymake-run-in-place

joaotavora commented 4 years ago

Hello Maris,

Maris Orbidans notifications@github.com writes:

see this: flymake/emacs-flymake#32

Sorry, but I ask you to take the effort to explain what is your problem, instead of sending me somewhere else. Explain in terms of the Eglot program, which is where you are reporting the bug to. See the "Reporting bugs" section in the README.md file, particularly point 3.

Your flymake version doesn't have flymake-run-in-place

I don't understand what "my version" is and how that would help anything, because I don't know what your problem is. I don't know what flymake-run-in-place is or what it would fix.

Thank you, João

maruks commented 4 years ago

Flymake creates temp files in project directory. It is a huge problem because it breaks compilation.

There is this setting in flymake which prevents it: flymake-run-in-place

But flymake version "1.0.8" doesn't have flymake-run-in-place.

Is there any other way to disable creation of temp files in project directory?

joaotavora commented 4 years ago

Flymake creates temp files in project directory.

Do you understand that your sending this bug report to the Eglot repository? Can you explain what you are doing with Eglot that is creating this huge problem?

See this please: https://github.com/joaotavora/eglot#reporting-bugs

Basically, to be able to help you, we need to understand what software you are running. So you need to read particularly point 3 of the aforementioned link and explain clearly what you are trying to do.

The problem likely lies in your configuration, or in some detail that you are not

There is this setting in flymake which prevents it: flymake-run-in-place

The file you point to is NOT the official Flymake, it is a fork started somewhere in 2011 and which isn't updated since 2013. There is not and there hasn't ever been an option called flymake-run-in-place in the official Flymake distributed with GNU Emacs.

Is there any other way to disable creation of temp files in project directory?

Again, I don't know what you are trying to do, but Eglot's use of Flymake does NOT do this. You may be somehow giving other uses to Flymake.

joaotavora commented 4 years ago

@maruks Even in the absence of more information, I am convinced you are using the so-called "legacy Flymake" backend, so called flymake-proc-legacy-flymake, which you should disable with:

(remove-hook 'flymake-diagnostic-functions 'flymake-proc-legacy-flymake)

Somewhere in your configuration.

It is somehow "kicking in" you Haskell files along with Eglot's use of Flymake. Maybe Eglot should be even more careful and don't allow any but its own backend to run.

maruks commented 4 years ago

If I open a haskell file and start eglot then it always creates temporary flymake file.

This didn't help: (remove-hook 'flymake-diagnostic-functions 'flymake-proc-legacy-flymake)

I use Emacs 26.3 with these packages:

flymake 1.0.8 installed A universal on-the-fly syntax checker eglot 20200531.1058 dependency Client for Language Server Protocol (LSP) flymake 0.3 built-in A universal on-the-fly syntax checker flymake-proc 0.3 built-in Flymake backend for external tools

joaotavora commented 4 years ago

Ok we're getting somwhere. But now, do you know that Emacs has something called a "user configuration file"? Do you know where yours is? Can you move it out of the way, start Emacs without it and then show me exactly the steps you do? Thank you very much.

maruks commented 4 years ago

ok, with empty config file and only few packages (haskell and eglot) installed this doesn't happen.

I couldn't find why it happens with my config.

joaotavora commented 4 years ago

I couldn't find why it happens with my config.

Right. So we're making progress.

A good way to start tracking down the problem is to bisect your config file. Start Emacs with half you config file. If the problem happens you know it's in that half, otherwise it's in the other half. Proceed in this manner until you discover the problematic spot in your config.

harinath commented 4 years ago

This appears to be related to a bug in haskell-mode: https://github.com/haskell/haskell-mode/issues/1704

See the applied fix there.