unofficial mirror of help-gnu-emacs@gnu.org
 help / color / mirror / Atom feed
From: Michael Slass <miknrene@drizzle.com>
Subject: Re: replace-in-string  and  backward-delete-char   [help request!]
Date: Mon, 18 Nov 2002 19:01:52 GMT	[thread overview]
Message-ID: <m3zns6k86m.fsf@localhost.localdomain> (raw)
In-Reply-To: mailman.1037600352.29317.help-gnu-emacs@gnu.org

Joe Corneli <jcorneli@mail.ma.utexas.edu> writes:

>Hello --
>
>I am running XEmacs version 21.5  (beta4) "bamboo"  for
>darwin 6.0.   I expect that won't be hugely relevant but
>thought I should mention it before proceeding.
>
>I wrote the following code (below). It has 2 problems. The first
>is that replace-in-string does not seem to have any effect.
>The second is that backward-delete-char copies the deleted stuff
>to the kill ring even though I ask it not to (at least
>I think that I'm interpreting the documentation properly by
>adding an explicit "nil" at the end. -- Behavior is the same
>for me when I put nothing after the "3").
>
>Suggestions?  I'm open to someone rewriting the code entirely
>if he or she has a better way to do this. I just want it
>to work....
>
>Thanks,
>Joe Corneli
>
>(defun cite-last-n-words (n)
>"Copy last ARG words to point and wrap with TeX citation markup."
>   (interactive "p")
>   (backward-kill-word n)
>   (yank)
>   (insert " \\cite{")
>   (kill-new
>   ; stuff I can't get to work properly--------
>     (replace-in-string
>      (replace-in-string
>       (prin1-to-string (yank))
>       " " "_")
>      "[\n]" "_")
>   ; --------stuff I can't get to work properly
>    )
>   (yank)
>
>   ;; need to rid of trailing nil... but I don't like it being added to
>   ;; kill ring even though I indicate I don't want it there.
>   (backward-delete-char 3 nil)
>   (delete-horizontal-space)
>   (insert "} ")
>   )
>
>
>

I'm not sure if you're trying to wrap the current n word in \cite{...}
in place, or trying to place such a string on the kill ring.  Here's a
solution for each. The only magic is the (save-excursion ...) form, for
which you should read the docs, 

(defun cite-last-n-words (word-count)
  "Wrap WORD-COUNT words before the point in TeX \\cite{...}"
  (interactive "p")
  (insert "}")
  (save-excursion
    (backward-word word-count)
    (insert "\\cite{")))


(defun add-last-n-words-citation-to-kill (word-count)
  "Add to kill ring: \"\\cite{<last WORD-COUNT words>}\""
  (interactive "p")
  (let* ((beg
          (save-excursion
            (backward-word word-count)
            (point)))
         (entry (concat "\\cite{"
                        (buffer-substring beg (point))
                        "}")))
    (kill-new entry)
    (message "Created kill ring entry: %s" entry)))



-- 
Mike Slass

       reply	other threads:[~2002-11-18 19:01 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <mailman.1037600352.29317.help-gnu-emacs@gnu.org>
2002-11-18 19:01 ` Michael Slass [this message]
2002-11-18  6:06 replace-in-string and backward-delete-char [help request!] Joe Corneli

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.gnu.org/software/emacs/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=m3zns6k86m.fsf@localhost.localdomain \
    --to=miknrene@drizzle.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).