Function: c-remove-string-fences

c-remove-string-fences is a byte-compiled function defined in cc-mode.el.gz.

Signature

(c-remove-string-fences &optional HERE)

Source Code

;; Defined in /usr/src/emacs/lisp/progmodes/cc-mode.el.gz
;; Non-nil when, in a before-change function, the deletion of a range of text
;; will change the "stringiness" of the subsequent text.  Only used when
;; `c-multiline-string-start-char' is a non-nil value which isn't a character.

(defun c-remove-string-fences (&optional here)
  ;; The character after HERE (default point) is either a string delimiter or
  ;; a newline, which is marked with a string fence text property for both
  ;; syntax-table and c-fl-syn-tab.  Remove these properties from that
  ;; character and its matching newline or string delimiter, if any (there may
  ;; not be one if there is a missing newline at EOB).
  (save-excursion
    (if here
	(goto-char here)
      (setq here (point)))
    (cond
     ((memq (char-after) c-string-delims)
      (save-excursion
	(save-match-data
	  (forward-char)
	  (if (and (c-search-forward-char-property 'syntax-table '(15))
		   (memq (char-before) '(?\n ?\r)))
	      (c-clear-syn-tab (1- (point))))))
      (c-clear-syn-tab (point)))
     ((memq (char-after) '(?\n ?\r))
      (save-excursion
	(save-match-data
	  (when (and (c-search-backward-char-property 'syntax-table '(15))
		     (memq (char-after) c-string-delims))
	    (c-clear-syn-tab (point)))))
      (c-clear-syn-tab (point)))
     (t (c-benign-error "c-remove-string-fences: Wrong position")))))