[ESS] Emac s No0b seekz dreem functi0n (C-c C-c)

Dan Bolser dmb at mrc-dunn.cam.ac.uk
Thu Oct 5 09:59:01 CEST 2006


Dan Bolser wrote:
> Dan Bolser wrote:
>   
>> GSOH
>>
>>
>> The following does not work, and I can't work out why (I am very 
>> inexperienced with emacs).
>>
>> (defun ess-eval-paragraph-and-step-xxx (vis)
>>  "Send the current paragraph to the inferior ESS process and move 
>> forward to
>> the next paragraph.  Arg has same meaning as for `ess-eval-region'."
>>  (interactive "P")
>>  (let ((beg-end (ess-eval-paragraph vis)))
>>    (goto-char (1+ (cadr beg-end))))
>>  (save-excursion
>>    (ess-switch-to-end-of-ESS)
>>    )
>>  )
>>
>>
>> I am trying to get the functionality of ess-eval-paragraph-and-step 
>> (C-c C-c), but combine it with the convenience of 
>> ess-eval-line-and-step (C-c C-n), which also shows the 'process 
>> window' at the appropriate place (the bottom). The above code leaves 
>> the 'active' cursor in the 'process window' which isn't what I want.
>>
>> I would like ess-eval-paragraph-and-step-xxx to evaluate the function 
>> or paragraph AND also show the 'process window' AND move the 'cursor' 
>> to the bottom of the 'process window' AND put the cursor back at the 
>> end of the function or paragraph just as ess-eval-paragraph-and-step 
>> does. I had limited success using an *other-window* command (I forget 
>> which), but obviously that is not as good as talking directly to the 
>> ESS 'process window'
>>
>> Thanks for any help
>>
>> Dan.
>>
>>
>>
>> P.S.
>>
>> Hmmm....
>>
>> I got this to work (but I don't really know how)...
>>
>>
>> (defun ess-eval-paragraph-and-step-xxx (vis)
>>  "Er..."
>>  (interactive "P") ; What is this?
>>  (ess-eval-paragraph-and-step vis)
>>  (previous-line 1)
>>  (ess-eval-line-and-step)
>>  )
>>
>> (global-set-key (kbd "C-c C-c") 'ess-eval-paragraph-and-step-xxx)
>>
>>
>> However, that 'global-set-key' part doesn't seem to work (running the 
>> function from M-x appears to work fine). Is this a dumb issue, or is 
>> the binding gobbled up by ess? (I am running all this after loading 
>> ess with
>>
>> ;; Allow R command automatically
>> (load "/home/xxx/emacs/ess-5.3.3/lisp/ess-site")
>>
>>     
>
> Follow up...
>
> The following is working like a dream...
>
> (defun ess-eval-function-or-paragraph-and-step-dan (vis)
>   "Er..."
>   (interactive "P")
>   (ess-eval-function-or-paragraph-and-step vis)
>   (previous-line 1)
>   (ess-eval-line-and-step)
>   )
>
> (add-hook 'ess-mode-hook
>       (lambda ()
>         (local-set-key (kbd "C-c C-c")
>                'ess-eval-function-or-paragraph-and-step-dan)
>         )
>       )
>
>
> Except that the following function throws an error using C-c C-c (as 
> bound above), whereas it is executed without error using C-c C-r over 
> the whole region...
>
>
> y <- function(x) {
>   print(x)
> }
>
>
> However, this works...
>
> y <- function(x) {print(x)}
>
>
> Anything else (spread over more than one line) fails using my C-c C-c 
> function. However, (of course) the original 
> "ess-eval-function-or-paragraph-and-step" works fine.
>
>
> Can anyone on the list help me to get the behavior I want without the 
> above failure? I figure I can simply tweak the original function 
> definition, but I am not sure how.
>   

OK, sorry for spamming the list with idiot questions. I see why the 
above fails for functions. The command

"ess-eval-function-or-paragraph-and-step"


behaves differently when it is run within a function and when it is run 
on a paragraph - in the latter case it leaves the cursor two lines below 
the paragraph, and in the former case just one line.

My cobbled together function assumes that it will always leave two 
lines. Now I can patch the ess-eval function, or tweak my function, but 
I would rather be able to 'do it right'. How do I get the effect of 
ess-eval-line-and-step without running ess-eval-line-and-step? I.e. show 
the process window and move to the bottom?


> Cheers,
>
> Dan.
>
>
>
>   
>>
>>
>>
>>
>>
>>     
>
> ______________________________________________
> ESS-help at stat.math.ethz.ch mailing list
> https://stat.ethz.ch/mailman/listinfo/ess-help
>




More information about the ESS-help mailing list