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

Format Document or SQLFluff: Fix overwrites file contents with sqlfluff logs #132

Open
MiConnell opened this issue Mar 27, 2024 · 4 comments

Comments

@MiConnell
Copy link

when running the extension from the command palette the contents of the file get overwritten with logs and no formatting is applied. this does not happen when running from the command line and in the below example no fixable violations are found.

installed sqlfluff version is 3.0.3

➜ sqlfluff --version                                                
sqlfluff, version 3.0.3

installed extension version is 3.0.0

sqlfluff
v3.0.0
example.mov
@keraion
Copy link
Contributor

keraion commented Mar 30, 2024

It looks like you are using the dbt templater here. Have you enabled the executeInTerminal option in the settings?

"sqlfluff.experimental.format.executeInTerminal": true,

Take note of the formatOnSave warning:

Determines if the sqlfluff fix command overwrites the file contents instead of this extension. You should not change the file contents while formatting is occurring if this is enabled. May lead to problems if editor.formatOnSave = true. This allows formatting to work when the templater is set to dbt. This can help solve Mojibake issues.

@MiConnell
Copy link
Author

Regardless of settings a code formatter should never overwrite the contents of a file with log output right? This looks similar to #126

@keraion
Copy link
Contributor

keraion commented Apr 2, 2024

Ideally yes, however, the current implementation of this extension's default mode is to take the output from stdout and replace the content with that output. When using the dbt templater, dbt prints additional information to stdout which may be picked up from the formatter's output. The executeInTerminal option runs fix on the file directly and reloads the content from the fixed file.

@MiConnell
Copy link
Author

ok makes sense, thanks. that did fix the issue. should this just default to true for dbt templates? is that even possible?

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

No branches or pull requests

2 participants