At Fri, 11 Oct 2002 21:22:28 +1000, Bill Bennett wrote:
> I use vi as an editing language.
> I'd like a command that would put in the section command and
> capitalize the leading letters of all words in a line that
> are *not* of one, two or three letters. However, the first
> word in the line, regardless of the number of letters *must*
> have a leading capital.

i don't want to start an argument or anything, i just don't think
you're using the right tool for the job.

eg: here is a fairly straightforward (imo) piece of elisp that will do
exactly what you want:

(defun bozotitlecase-section-ify ()
  "replace \"and this is the current line\" with
\"\\section{And This is the Current Line}\""
  (interactive)
  (beginning-of-line)
  ;; match the beginning of any word of 4 or more characters, or the
  ;; first on the line
  (while (re-search-forward "^\\w\\|\\<\\w\\{4\\}" (point-at-eol) t)
    ;; upcase the first letter of whatever we just matched
    (replace-match "\\u\\&"))
  (beginning-of-line)
  (insert-string "\\section{")
  (end-of-line)
  (insert-string "}"))

and if writing elisp is too difficult, you could have recorded a macro
that would have generated pretty much the same code.


if they were the only "freestanding" single lines in your text (ie:
they could be found without user interaction), you might also want to
consider preprocessing your document with a simple perl (or similar)
script.  even if the script got it wrong 10% of the time, you're
already way ahead.

-- 
 - Gus
-- 
SLUG - Sydney Linux User's Group - http://slug.org.au/
More Info: http://lists.slug.org.au/listinfo/slug

Reply via email to