Loading ...
Sorry, an error occurred while loading the content.

Re: putting visually selected text into a string

Expand Messages
  • Vincent
    sc, I might have a buffer with the following 2 lines: x
    Message 1 of 9 , Dec 1, 2007
    • 0 Attachment
      sc,

      I might have a buffer with the following 2 lines:

      x <- rnorm(100)
      plot(x)

      I used A.Politz suggestion (thanks!) and it almost works. The issue is
      that i get an error when i select both lines -- E492: Not an editor
      command: plot(x)"'

      R will accept code segments separated by at ';' but ideally it would
      be a return after each line of R code.

      Best,

      Vincent

      On Nov 30, 11:42 pm, sc <tooth...@...> wrote:
      > On Friday 30 November 2007 23:33, Vincent wrote:
      >
      >
      >
      > > I have the following line in my vimrc file
      >
      > > map <buffer> <F3> :call RunProgram()<CR>
      >
      > > In the RunProgram function i have
      >
      > > let command = getline(".")
      > > execute "!osascript -e 'tell application \"R\" to cmd \""
      > > .command. "\"'"
      >
      > > The osascript stuff allows me on my mac to send R code to
      > > an R terminal.
      >
      > > The issue: if I visually select a number of lines and press
      > > F3 the RunProgram function is run once for each line and I
      > > have to press <CR> to get every line of code send to R.
      > > Very annoying if you are trying to send 50 lines :(
      >
      > > What I would like to do is have the selected lines put into
      > > the string 'command' and have the execute line applied to
      > > that string once. Problem is i don't know how to do that.
      >
      > > Any suggestions?
      >
      > i'll ask the question everyone with answers is wondering:
      > what exactly do you want between what was the selected lines
      > of the buffer as they are passed to osascript?
      >
      > sc
      >
      > > Thanks,
      >
      > > Vincent
      --~--~---------~--~----~------------~-------~--~----~
      You received this message from the "vim_use" maillist.
      For more information, visit http://www.vim.org/maillist.php
      -~----------~----~----~----~------~----~------~--~---
    • A.Politz
      ... Try to use system() instead of exec and ! . -ap -- Ich hab geträumt, der Krieg wär vorbei. --~--~---------~--~----~------------~-------~--~----~ You
      Message 2 of 9 , Dec 1, 2007
      • 0 Attachment
        Vincent wrote:

        >sc,
        >
        >I might have a buffer with the following 2 lines:
        >
        >x <- rnorm(100)
        >plot(x)
        >
        >I used A.Politz suggestion (thanks!) and it almost works. The issue is
        >that i get an error when i select both lines -- E492: Not an editor
        >command: plot(x)"'
        >
        >R will accept code segments separated by at ';' but ideally it would
        >be a return after each line of R code.
        >
        >Best,
        >
        >Vincent
        >
        >...
        >
        >>>execute "!osascript -e 'tell application \"R\" to cmd \""
        >>>.command. "\"'"
        >>>
        >....
        >
        >

        Try to use system() instead of exec and '!'.

        -ap



        --
        Ich hab geträumt, der Krieg wär vorbei.


        --~--~---------~--~----~------------~-------~--~----~
        You received this message from the "vim_use" maillist.
        For more information, visit http://www.vim.org/maillist.php
        -~----------~----~----~----~------~----~------~--~---
      • Vincent
        Thanks for the suggestions! The following works exactly as i had wanted. function! RunRProgram() range let command =
        Message 3 of 9 , Dec 1, 2007
        • 0 Attachment
          Thanks for the suggestions!

          The following works exactly as i had wanted.

          function! RunRProgram() range
          let command = join(getline(a:firstline,a:lastline),"\\n")
          execute "!osascript -e 'tell application \"R\" to cmd
          \"" .command. "\"'"
          endfunction

          ap: I tried using system but can't seem to get that to work.

          system("osascript -e 'tell application \"R\" to cmd \"" .command.
          "\"'")


          Vincent


          On Dec 1, 4:43 pm, "A.Politz" <poli...@...> wrote:
          > Vincent wrote:
          > >sc,
          >
          > >I might have a buffer with the following 2 lines:
          >
          > >x <- rnorm(100)
          > >plot(x)
          >
          > >I used A.Politz suggestion (thanks!) and it almost works. The issue is
          > >that i get an error when i select both lines -- E492: Not an editor
          > >command: plot(x)"'
          >
          > >R will accept code segments separated by at ';' but ideally it would
          > >be a return after each line of R code.
          >
          > >Best,
          >
          > >Vincent
          >
          > >...
          >
          > >>>execute "!osascript -e 'tell application \"R\" to cmd \""
          > >>>.command. "\"'"
          >
          > >....
          >
          > Try to use system() instead of exec and '!'.
          >
          > -ap
          >
          > --
          > Ich hab geträumt, der Krieg wär vorbei.
          --~--~---------~--~----~------------~-------~--~----~
          You received this message from the "vim_use" maillist.
          For more information, visit http://www.vim.org/maillist.php
          -~----------~----~----~----~------~----~------~--~---
        • Ben Schmidt
          ... You would need to :call system(...), if you didn t. System is a function so needs to live inside an expression, and the :call command is a nice command
          Message 4 of 9 , Dec 2, 2007
          • 0 Attachment
            > system("osascript -e 'tell application \"R\" to cmd \"" .command.
            > "\"'")

            You would need to :call system(...), if you didn't. System is a function so needs
            to live inside an expression, and the :call command is a nice command that just
            executes an expression and discards the result (unlike :exe which evaluates the
            expression then executes the result as a command).

            But hey, you have already solved your problem, so no need!

            Ben.





            Send instant messages to your online friends http://au.messenger.yahoo.com


            --~--~---------~--~----~------------~-------~--~----~
            You received this message from the "vim_use" maillist.
            For more information, visit http://www.vim.org/maillist.php
            -~----------~----~----~----~------~----~------~--~---
          • Vincent
            This is actually even nicer. Thanks for your help Ben! Best, Vincent ... --~--~---------~--~----~------------~-------~--~----~ You received this message from
            Message 5 of 9 , Dec 2, 2007
            • 0 Attachment
              This is actually even nicer. Thanks for your help Ben!

              Best,

              Vincent

              On Dec 2, 4:34 am, Ben Schmidt <mail_ben_schm...@...> wrote:
              > > system("osascript -e 'tell application \"R\" to cmd \"" .command.
              > > "\"'")
              >
              > You would need to :call system(...), if you didn't. System is a function so needs
              > to live inside an expression, and the :call command is a nice command that just
              > executes an expression and discards the result (unlike :exe which evaluates the
              > expression then executes the result as a command).
              >
              > But hey, you have already solved your problem, so no need!
              >
              > Ben.
              >
              > Send instant messages to your online friendshttp://au.messenger.yahoo.com
              --~--~---------~--~----~------------~-------~--~----~
              You received this message from the "vim_use" maillist.
              For more information, visit http://www.vim.org/maillist.php
              -~----------~----~----~----~------~----~------~--~---
            Your message has been successfully submitted and would be delivered to recipients shortly.