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

Re: Function to put full stop at the end of my sentences -> refining

Expand Messages
  • Eric Smith
    Eric Smith wrote on Sun-10-Feb 13 1:55PM ... I am trying (and failing) to modify this so that with lines commencing with certain words like; Dear Geachte
    Message 1 of 2 , Feb 12, 2013
    • 0 Attachment
      Eric Smith wrote on Sun-10-Feb 13 1:55PM
      > This works great for me, thanks Benjamin.
      >
      > E.
      >
      > Benjamin R. Haskell wrote on Thu-07-Feb 13 4:39PM
      > > ino <expr> <CR> getline('.') =~ '\w$' ? ".\<CR>" : "\<CR>"

      I am trying (and failing) to modify this so that with lines
      commencing with certain words like;
      Dear
      Geachte
      Foobar
      ... must not have a full stop inserted.

      Tried using \@<!

      How should I do this?

      Eric

      --
      --
      You received this message from the "vim_use" maillist.
      Do not top-post! Type your reply below the text you are replying to.
      For more information, visit http://www.vim.org/maillist.php

      ---
      You received this message because you are subscribed to the Google Groups "vim_use" group.
      To unsubscribe from this group and stop receiving emails from it, send an email to vim_use+unsubscribe@....
      For more options, visit https://groups.google.com/groups/opt_out.
    • Benjamin R. Haskell
      ... Here s how I d do that. For starters, I d modify the fun! ... endf version, rather than the one-liner. fun! LazyFullStop() let line = getline( . ) let
      Message 2 of 2 , Feb 12, 2013
      • 0 Attachment
        On Tue, 12 Feb 2013, Eric Smith wrote:

        > Eric Smith wrote on Sun-10-Feb 13 1:55PM
        >> This works great for me, thanks Benjamin.
        >>
        >> E.
        >>
        >> Benjamin R. Haskell wrote on Thu-07-Feb 13 4:39PM
        >>> ino <expr> <CR> getline('.') =~ '\w$' ? ".\<CR>" : "\<CR>"
        >
        > I am trying (and failing) to modify this so that with lines commencing
        > with certain words like;
        > Dear
        > Geachte
        > Foobar
        > ... must not have a full stop inserted.
        >
        > Tried using \@<!
        >
        > How should I do this?

        Here's how I'd do that. For starters, I'd modify the 'fun! ... endf'
        version, rather than the one-liner.

        fun! LazyFullStop()
        let line = getline('.')
        let firstword = matchstr(line, '\w\+')
        if line =~ '\w$' && -1 == index(['Dear','Geachte','Foobar'], firstword)
        return ".\<CR>"
        end
        return "\<CR>"
        endf
        ino <expr> <CR> LazyFullStop()

        That's case-sensitive (which may be what you want).

        If you want to allow leading spaces before the "forbidden" words, you
        can change:

        let firstword = matchstr(line, '\w\+')

        To:

        let firstword = matchstr(line, '\%(^\s*\)\@<=\w\+')

        And if you really want the one-liner:

        ino <expr> <CR> getline('.') =~ '\%(^\s*\%(Dear\\|Geachte\\|Foobar\)\>.*\)\@<!\w$' ? ".\<CR>" : "\<CR>"

        --
        Best,
        Ben

        --
        --
        You received this message from the "vim_use" maillist.
        Do not top-post! Type your reply below the text you are replying to.
        For more information, visit http://www.vim.org/maillist.php

        ---
        You received this message because you are subscribed to the Google Groups "vim_use" group.
        To unsubscribe from this group and stop receiving emails from it, send an email to vim_use+unsubscribe@....
        For more options, visit https://groups.google.com/groups/opt_out.
      Your message has been successfully submitted and would be delivered to recipients shortly.