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

Re: Creating a backup directory

Expand Messages
  • Tim Chase
    ... Anything in particular in that post need further explaining? I tried to comment it more than I do my own throw-away scripts in the hopes that readers
    Message 1 of 4 , Jul 3, 2006
    • 0 Attachment
      > Wow, cool. I really need to learn Vim more. :-)

      Anything in particular in that post need further explaining? I
      tried to comment it more than I do my own throw-away scripts in
      the hopes that readers could follow along.

      The basic framework of the script was

      [function definition]

      [line of code to run the tests]

      [line to terminate the script at this point in the file]

      [bunch of lines of test filenames/dirnames]


      I don't know as if I've ever seen anybody else do the finish/:g
      pair of commands to include a test suite in a script, but it
      sounded like what I wanted to do at the time. The test suite
      doesn't have the expected results in it, like I would have
      preferred, but you've gotta give somewhere. :) I'll leave that
      as an exercise for the reader ;)

      The function definition should be fairly straightforward. It
      first ensures that there's one and only one trailing slash at the
      end of the parameter. It then expands any variables, resolves
      them (in case there are symbolic links or .LNK files on win32 in
      the path), and tests if the resulting name is a directory. If it
      is, we're good to go. If it's not, it tries to make the
      directory (escaping at least spaces...other characters might need
      to be escaped as well). It then tests again to see if the
      directory was successfully created. If so, all's good. If not,
      it spontaneously combusts into a thousand messy pieces that
      you'll have to scrape off the ceiling with a spatula. Or echoerr. :)

      The test-harness line is a bit opaque, but managable. Operating
      on the range from the last line containing only the word "finish"
      in the file through the end of the file, it does issues commands
      on lines that don't match (":v") the pattern "beginning of the
      line, followed by whitespace, followed by a double-quote". As
      the double-quote is used as the vimscript comment leader, I just
      kept it the same. Thus it ignores any commented lines. One
      might want to make a smarter test harness that ignored blank
      lines too. It then, for each of those non-comment lines, gets
      the line's contents and passes it as a parameter to the function.

      The "finish" line stops the vimscript in its tracks so that vim
      doesn't attempt to parse the remainder of the file as
      script...which is good, because the rest of the file isn't
      vimscript, but stuff that would make vim choke.

      Hope this gives a bit of a breakdown and makes it easier to
      follow along. Feel free to incorporate any or all of it into
      your own scripting adventures. Just one more vimscript hack.

      Enjoy!

      -tim
    Your message has been successfully submitted and would be delivered to recipients shortly.