From: Martin S. <ma...@ly...> - 2002-09-23 02:35:19
|
"Fischer, Oliver" <pl...@sn...> wrote: > I tried to find a example, how configure substatement-cont in such a > way, that code as the following will look like this: /.../ > predicate.append("FirstName =~~ \"").append(firstName) > .append(".*\""); I've made a lineup function that does something like this for "->" operators, and it's trivial to change it to handle ".". It doesn't line up exactly as you've written, though; the dot on the second line will be lined up under the dot above, not after it. (defun c-lineup-cascaded-calls (langelem) "Line up \"cascaded calls\" under each other. If the line begins with \".\" and the preceding line ends with one or more function calls preceded by \".\", then the arrow is lined up with the first of those \".\". E.g: result = proc.add(17).add(18) .add(19) + <- c-lineup-cascaded-calls offset; <- c-lineup-cascaded-calls (inactive) In any other situation nil is returned to allow use in list expressions. Works with: topmost-intro-cont, statement-cont, arglist-cont, arglist-cont-nonempty." (if (and (eq (car langelem) 'arglist-cont-nonempty) (not (eq (nth 2 c-syntactic-element) (c-most-enclosing-brace (c-parse-state))))) ;; The innermost open paren is not our one, so don't do ;; anything. This can occur for arglist-cont-nonempty with ;; nested arglist starts on the same line. nil (let ((stmt-start (cdr langelem)) col) (save-excursion (back-to-indentation) (when (and (looking-at "\\.") (= (c-backward-token-1 1 t stmt-start) 0) (eq (char-after) ?\() (= (c-backward-token-1 2 t stmt-start) 0) (looking-at "\\.")) (setq col (current-column)) (while (and (= (c-backward-token-1 1 t stmt-start) 0) (eq (char-after) ?\() (= (c-backward-token-1 2 t stmt-start) 0) (looking-at "\\.")) (setq col (current-column))) (vector col)))))) |