Skip to content

Commit d9b5be6

Browse files
committed
use a different method to fix #1798 because R CMD check doesn't like the unlockBinding() call
1 parent 43dd3ae commit d9b5be6

File tree

13 files changed

+21
-19
lines changed

13 files changed

+21
-19
lines changed

DESCRIPTION

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
Package: knitr
22
Type: Package
33
Title: A General-Purpose Package for Dynamic Report Generation in R
4-
Version: 1.43.16
4+
Version: 1.43.17
55
Authors@R: c(
66
person("Yihui", "Xie", role = c("aut", "cre"), email = "xie@yihui.name", comment = c(ORCID = "0000-0003-0645-5666")),
77
person("Abhraneel", "Sarma", role = "ctb"),

R/block.R

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ call_block = function(block) {
5252
}
5353

5454
# save current chunk options in opts_current
55-
opts_current$unlock(); opts_current$restore(params)
55+
opts_current$restore(params)
5656

5757
if (opts_knit$get('progress')) print(block)
5858

@@ -112,7 +112,7 @@ call_block = function(block) {
112112
opts_current$restore(params) # save current options
113113
# prevent users from modifying opts_current (#1798)
114114
if (!xfun::check_old_package('lingglosses', '0.0.6')) # TODO: remove this hack https://github.com/agricolamz/lingglosses/issues/22
115-
opts_current$lock(); on.exit(opts_current$unlock(), add = TRUE)
115+
opts_current$lock(); on.exit(opts_current$lock(FALSE), add = TRUE)
116116

117117
# set local options() for the current R chunk
118118
if (is.list(params$R.options)) {

R/defaults.R

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
new_defaults = function(value = list()) {
44
defaults = value
5+
locked = FALSE
56

67
get = function(name, default = FALSE, drop = TRUE) {
78
if (default) defaults = value # this is only a local version
@@ -20,7 +21,10 @@ new_defaults = function(value = list()) {
2021
}
2122
set2 = function(values) {
2223
old = get(names(values), drop = FALSE)
23-
if (length(values)) defaults <<- merge(values)
24+
if (length(values)) {
25+
if (locked) stop('The object is read-only and cannot be modified.')
26+
defaults <<- merge(values)
27+
}
2428
invisible(old)
2529
}
2630
set = function(...) {
@@ -36,13 +40,11 @@ new_defaults = function(value = list()) {
3640
for (i in names(dots)) dots[[i]] <- c(defaults[[i]], dots[[i]])
3741
set2(dots)
3842
}
39-
env = environment()
40-
lock = function() lockBinding('defaults', env)
41-
unlock = function() unlockBinding('defaults', env)
43+
lock = function(status = TRUE) locked <<- status
4244

4345
list(
4446
get = get, set = set, delete = delete, append = append, merge = merge,
45-
restore = restore, lock = lock, unlock = unlock
47+
restore = restore, lock = lock
4648
)
4749
}
4850

R/output.R

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -156,7 +156,7 @@ knit = function(
156156
on.exit({
157157
opts_chunk$restore(optc)
158158
knit_code$restore(ocode)
159-
opts_current$unlock(); opts_current$restore()
159+
opts_current$restore()
160160
opts_knit$restore(optk)
161161
}, add = TRUE)
162162
opts_knit$set(

man/cache_engines.Rd

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

man/knit_code.Rd

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

man/knit_engines.Rd

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

man/knit_hooks.Rd

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

man/knit_patterns.Rd

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

man/opts_chunk.Rd

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)