Handle possible errors from RangeVisibleInBuffer() #4192
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
PR Prelude
Thank you for working on YCM! :)
Please complete these steps and check these boxes (by putting an
x
insidethe brackets) before filing your PR:
rationale for why I haven't.
actually perform all of these steps.
Why this change is necessary and useful
First and more common error is that by the time we execute
the buffer might not be there any more. This is because
RangeVisibleInBuffer()
is called asynchronously and the user may bwipeout a buffer in between polls.This regularly happens in our vim tests. In such a case, we get a nasty traceback from
vimsupport
module.The solution is to catch the KeyError and return None.
However,
ScrollingBufferRange()
also was not ready to handle None values fromRangeVisibleInBuffer()
, even thoughRangeVisibleInBuffer()
could return None even before, if a visible window forbufnr
can not be found.As for the missing tests... showing that an inherently racy scenario does not cause a stacktrace in vim level test... I think I prefer to keep what is left of my sanity.
This change is