Function: c-syntactic-content
c-syntactic-content is a byte-compiled function defined in
cc-engine.el.gz.
Signature
(c-syntactic-content FROM TO PAREN-LEVEL)
Source Code
;; Defined in /usr/src/emacs/lisp/progmodes/cc-engine.el.gz
(defun c-syntactic-content (from to paren-level)
;; Return the given region as a string where all syntactic
;; whitespace is removed or, where necessary, replaced with a single
;; space. If PAREN-LEVEL is given then all parens in the region are
;; collapsed to "()", "[]" etc.
;;
;; This function might do hidden buffer changes.
(save-excursion
(save-restriction
(narrow-to-region from to)
(goto-char from)
(let* ((parts (list nil)) (tail parts) pos in-paren)
(while (re-search-forward c-syntactic-ws-start to t)
(goto-char (setq pos (match-beginning 0)))
(c-forward-syntactic-ws)
(if (= (point) pos)
(forward-char)
(when paren-level
(save-excursion
(setq in-paren (= (car (parse-partial-sexp from pos 1)) 1)
pos (point))))
(if (and (> pos from)
(< (point) to)
(looking-at "\\w\\|\\s_")
(save-excursion
(goto-char (1- pos))
(looking-at "\\w\\|\\s_")))
(progn
(setcdr tail (list (buffer-substring-no-properties from pos)
" "))
(setq tail (cddr tail)))
(setcdr tail (list (buffer-substring-no-properties from pos)))
(setq tail (cdr tail)))
(when in-paren
(when (= (car (parse-partial-sexp pos to -1)) -1)
(setcdr tail (list (buffer-substring-no-properties
(1- (point)) (point))))
(setq tail (cdr tail))))
(setq from (point))))
(setcdr tail (list (buffer-substring-no-properties from to)))
(apply 'concat (cdr parts))))))