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

Try to prevent errors clobbering the current buffer #14

Open
wants to merge 3 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 12 additions & 0 deletions Pipfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
[[source]]
url = "https://pypi.org/simple"
verify_ssl = true
name = "pypi"

[packages]
yapf = "*"

[dev-packages]

[requires]
python_version = "3.6"
29 changes: 29 additions & 0 deletions Pipfile.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 2 additions & 0 deletions README.rst
Original file line number Diff line number Diff line change
Expand Up @@ -123,3 +123,5 @@ Alternatively alternatively yapf could be set as the ``equalprg``:
and reformat the whole file with ``gg=G`` or a single line with ``=``.

.. _gq{motion}: https://github.com/vim/vim/blob/b182b40080a23ea1e1ffa28ea03b412174a236bb/runtime/doc/change.txt#L1299

Note: if ``vim-yapf`` is used in this way, any errors will overwrite the current buffer. Make sure to check the buffer for errors before saving. Regardless, the ``undo`` command should work.
Copy link
Collaborator

Choose a reason for hiding this comment

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

The problem is when I type "ZZ". In that case, the vim window closes; I don't see the error; and my file contents are lost.

Is there any way to implement this without having "ZZ" lose file contents? Maybe write to a new buffer instead of overwrite current buffer? At the very least, append to current buffer?

Actually, ideal for me would be if yapf just silently failed with syntax errors.

  • yapf exit code is not 0
  • No vim buffers are modified

Copy link
Collaborator

Choose a reason for hiding this comment

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

Is it possible to print yapf syntax error to vim stdout or stderr, rather than write to a vim buffer?

Copy link
Collaborator

Choose a reason for hiding this comment

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

Alright, I found a workaround:

https://gist.github.com/nepsilon/003dd7cfefc20ce1e894db9c94749755

So here's what I would like to see:

Note: if vim-yapf is used in this way, any errors will overwrite the current buffer. Make sure to check the buffer for errors before saving. If you save with :w, :undo will revert the buffer. If you save with :ZZ, the saved file will be overwritten with the yapf syntax error. It is recommended to Auto-backup your files so you can recover your work.

Copy link
Collaborator

Choose a reason for hiding this comment

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

Note even with the workaround, I lose the most recent changes (the ones that caused error), but it's better than nothing

6 changes: 6 additions & 0 deletions t/basics.vim
Original file line number Diff line number Diff line change
Expand Up @@ -10,4 +10,10 @@ describe 'Yapf'
call Yapf()
Expect getline(8) == "class foo(object):"
end

it "does not lose information when an error occurs"
autocmd BufWritePre *.py 0,$!yapf
edit! t/syntax_errors.py
write!
end
end
Empty file added t/syntax_errors.py
Empty file.