@@ -90,13 +90,13 @@ lims <- function(...) {
9090# ' @export
9191# ' @rdname lims
9292xlim  <-  function (... ) {
93-   limits(c(... ), " x"  )
93+   limits(c(... ), " x" ,  call   =  current_call() )
9494}
9595
9696# ' @export
9797# ' @rdname lims
9898ylim  <-  function (... ) {
99-   limits(c(... ), " y"  )
99+   limits(c(... ), " y" ,  call   =  current_call() )
100100}
101101
102102# ' Generate correct scale type for specified limits
@@ -122,42 +122,45 @@ limits.numeric <- function(lims, var, call = caller_env()) {
122122    trans  <-  " identity" 
123123  }
124124
125-   make_scale(" continuous"  , var , limits  =  lims , trans  =  trans )
125+   make_scale(" continuous"  , var , limits  =  lims , trans  =  trans ,  call   =   call )
126126}
127127
128- make_scale  <-  function (type , var , ... ) {
129-   scale  <-  match.fun(paste(" scale_"  , var , " _"  , type , sep  =  " "  ))
130-   scale(... )
128+ make_scale  <-  function (type , var , ... , call  =  NULL ) {
129+   name  <-  paste(" scale_"  , var , " _"  , type , sep  =  " "  )
130+   scale  <-  match.fun(name )
131+   sc  <-  scale(... )
132+   sc $ call  <-  call  %|| % parse_expr(paste0(name , " ()"  ))
133+   sc 
131134}
132135
133136# ' @export
134137limits.character  <-  function (lims , var , call  =  caller_env()) {
135-   make_scale(" discrete"  , var , limits  =  lims )
138+   make_scale(" discrete"  , var , limits  =  lims ,  call   =   call )
136139}
137140# ' @export
138141limits.factor  <-  function (lims , var , call  =  caller_env()) {
139-   make_scale(" discrete"  , var , limits  =  as.character(lims ))
142+   make_scale(" discrete"  , var , limits  =  as.character(lims ),  call   =   call )
140143}
141144# ' @export
142145limits.Date  <-  function (lims , var , call  =  caller_env()) {
143146  if  (length(lims ) !=  2 ) {
144147    cli :: cli_abort(" {.arg {var}} must be a two-element vector"  , call  =  call )
145148  }
146-   make_scale(" date"  , var , limits  =  lims )
149+   make_scale(" date"  , var , limits  =  lims ,  call   =   call )
147150}
148151# ' @export
149152limits.POSIXct  <-  function (lims , var , call  =  caller_env()) {
150153  if  (length(lims ) !=  2 ) {
151154    cli :: cli_abort(" {.arg {var}} must be a two-element vector"  , call  =  call )
152155  }
153-   make_scale(" datetime"  , var , limits  =  lims )
156+   make_scale(" datetime"  , var , limits  =  lims ,  call   =   call )
154157}
155158# ' @export
156159limits.POSIXlt  <-  function (lims , var , call  =  caller_env()) {
157160  if  (length(lims ) !=  2 ) {
158161    cli :: cli_abort(" {.arg {var}} must be a two-element vector"  , call  =  call )
159162  }
160-   make_scale(" datetime"  , var , limits  =  as.POSIXct(lims ))
163+   make_scale(" datetime"  , var , limits  =  as.POSIXct(lims ),  call   =   call )
161164}
162165
163166# ' Expand the plot limits, using data
0 commit comments