Improve code chunk handling in base .R
files
#1454
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.
This PR fixes #1453 and fixes some bugs in handling of code chunks in
.R
and.Rmd
files.The first change is with
getChunks()
. Previously, for.R
files, the scan would find the first# %%
and mark it as the start line. Then, it would go until it found the next# %%
and incorrectly mark this as the end line. The line just before the next# %%
needs to be the end line (see #1453). This PR fixes this:The second change is with
getCurrentChunk()
. I have simplified this code greatly and do much less work. Basically, I check for three edge cases (no chunks, line < first chunk, line < last chunk) and return early. Otherwise, I select the first chunk with.endLine > line
. This works both for cursor within chunk and cursor between chunks.There is one change worth noting. Before,
getCurrentChunk()
would return undefined whenline
was after the last chunk. I instead return the last chunk and fix bugs with any commands this impacted.Testing
To test this, I created these two files (
temp.R
andtemp.Rmd
) and tried out the commands for running chunks, selecting current chunk, and going to next and previous chunk.