help-gnu-emacs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

add slashes


From: Andreas Roehler
Subject: add slashes
Date: Thu, 29 Mar 2007 21:00:42 +0200
User-agent: Thunderbird 1.5.0.4 (X11/20060516)

Just for discussion:

Several functions to escape special chars in region or
line, if no region is active.

Also a function `de-escape'.


__
Andreas Roehler

;;;;;;;

(defun escape-parentheses (&optional beg end)
 " "
 (interactive "*")
 (escape 'parentheses))

(defun escape-star-signs (&optional beg end)
 " "
 (interactive "*")
 (escape 'star))

(defun escape-dollar-signs (&optional beg end)
 " "
 (interactive "*")
 (escape 'dollar))

(defun escape-quotes (&optional beg end)
 " "
 (interactive "*")
 (escape 'quotes))

(defun escape-doublequotes (&optional beg end)
 " "
 (interactive "*")
 (escape 'doublequotes))

(defun escape-backslashes (&optional beg end)
 " "
 (interactive "*")
 (escape 'backslashes))

(defun escape (object &optional beg end)
 " "
 (let ((beg (if beg beg
          (cond ((and mark-active transient-mark-mode)
             (region-beginning))
            (t (line-beginning-position)))))
   (end (if end end
          (cond ((and mark-active transient-mark-mode)
             (1+ (region-end)))
            (t (line-end-position))))))
   (save-excursion
(funcall (intern-soft (concat "escape-"(symbol-name object)"-intern")) beg end))))

(defun escape-quotes-intern (beg end)
 (goto-char beg)
 (while (search-forward "\'" end t 1)
   (replace-match "\\\\\'")
   (setq end (1+ end))))

(defun escape-doublequotes-intern (beg end)
 (goto-char beg)
 (while (search-forward "\"" end t 1)
   (replace-match "\\\\\"")
   (setq end (1+ end))))

(defun escape-backslashes-intern (beg end)
 (goto-char beg)
 (while (re-search-forward "\\\\" end t 1)
   (replace-match "\\\\\\\\")
   (setq end (1+ end))))

(defun escape-dollar-intern (beg end)
 (goto-char beg)
 (while (search-forward "\$" end t 1)
   (replace-match "\\\\\$")
   (setq end (1+ end))))

(defun escape-star-intern (beg end)
 (goto-char beg)
 (while (search-forward "\*" end t 1)
   (replace-match "\\\\\*")
   (setq end (1+ end))))

(defun escape-parentheses-intern (beg end)
 (goto-char beg)
 (while (re-search-forward "\\([()]\\)" end t 1)
   (replace-match "\\\\\\1")
   (setq end (1+ end))))

(defun de-escape ()
 "Removes backslashes in region or line, if no region is active"
 (interactive "*")
 (let ((beg (cond ((and mark-active transient-mark-mode)
           (region-beginning))
          (t (line-beginning-position))))
   (end (cond ((and mark-active transient-mark-mode)
           (region-end))
          (t (line-end-position)))))
   (save-excursion
     (goto-char beg)
     (while (search-forward "\\" end t)
   (replace-match "" end t)
   (setq end (1- end))))))


;; end




reply via email to

[Prev in Thread] Current Thread [Next in Thread]