Index: cc-align.el
===================================================================
RCS file: /cvsroot/emacs/emacs/lisp/progmodes/cc-align.el,v
retrieving revision 1.20.2.13
diff -r1.20.2.13 cc-align.el
910a911,953
> (defun c-lineup-ObjC-method-call-colons (langelem)
>   "Line up selector args as Project Builder / XCode: colons of first
>    selector portions on successive lines are aligned.  If no decision can
>    be made return NIL, so that other lineup methods can be tried.  This is
>    typically chained with `c-lineup-ObjC-method-call'.
> 
> Works with: objc-method-call-cont."
>   (save-excursion
>     (catch 'no-idea
>       (let* ((method-arg-len (progn
> 			       (back-to-indentation)
> 			       (if (search-forward ":" (c-point 'eol) 'move)
> 				   (- (point) (c-point 'boi))
> 				 ; no complete argument to indent yet
> 				 (throw 'no-idea nil))))
> 
> 	     (extra (save-excursion 
>                       ; indent parameter to argument if needed
> 		      (back-to-indentation)
> 		      (c-backward-syntactic-ws (cdr langelem))
> 		      (if (eq ?: (char-before))
> 			  (c-get-offset '(objc-method-parameter-offset . nil))
> 			0)))
> 
> 	     (open-bracket-col (c-langelem-col langelem))
> 
> 	     (arg-ralign-colon-ofs (progn
> 			(forward-char) ; skip over '['
> 			; skip over object/class name
> 			; and first argument
> 			(c-forward-sexp 2)
> 			(if (search-forward ":" (c-point 'eol) 'move)
> 			    (- (current-column) open-bracket-col
> 			       method-arg-len extra)
> 			  ; previous arg has no param
>   			  (c-get-offset
> 			   '(objc-method-arg-unfinished-offset . nil))))))
> 
> 	(if (>= arg-ralign-colon-ofs
> 		(c-get-offset '(objc-method-arg-min-delta-to-bracket . nil)))
> 	    (+ arg-ralign-colon-ofs extra)
> 	  (throw 'no-idea nil))))))
> 
912c955
<   "Line up the colons that separate args.
---
>   "Line up the colons that separate args in a method declaration.
936c979
<   "Line up the colons that separate args.
---
>   "Line up the colons that separate args in a method declaration.
Index: cc-fonts.el
===================================================================
RCS file: /cvsroot/emacs/emacs/lisp/progmodes/cc-fonts.el,v
retrieving revision 1.2.2.17
diff -r1.2.2.17 cc-fonts.el
1322c1322,1350
< 	      c-font-lock-objc-methods))
---
> 
> 	      c-font-lock-objc-methods
> 
> 	      ;; Parts of selector name in messages
> 	      ;; PENDING: perhaps should change to only pick up inside brackets
> 	      ("\\sw*:" 0 font-lock-function-name-face keep t)
> 
> 	      ;; get argument-less selectors' highlighting right
> 	      ;; [[foo _bar_] _baz_] -> bar, baz are highlighted
> 	      ("\\(\\sw+\\)[ \t]*[]]"
> 		(1 (let ((non-ws-before-match (char-before 
> 			      (save-excursion
> 				(goto-char (match-beginning 1))
> 				;; expensive!
> 				(c-backward-syntactic-ws (c-point 'bol))
> 				(point)
> 				))))
> 		      (unless (or (eq ?:  non-ws-before-match)
> 				  (eq ?\[ non-ws-before-match)
> 				  (eq ?> non-ws-before-match))
> 			font-lock-function-name-face)))))
> 	  ;; PENDING: unsure if c-nonlabel-token-key or c-opt-extra-label-key
> 	  ;;          should be used here
> 	  (when (c-lang-const c-opt-extra-label-key)
> 	    `(,(c-make-font-lock-search-function
> 		(c-lang-const c-opt-extra-label-key)
> 		'((c-put-char-property (1- (match-end 0))
> 				       'c-type 'c-decl-end)))))
> 	  )
Index: cc-langs.el
===================================================================
RCS file: /cvsroot/emacs/emacs/lisp/progmodes/cc-langs.el,v
retrieving revision 1.25.2.19
diff -r1.25.2.19 cc-langs.el
2065c2065
<   objc    '("nil" "Nil")
---
>   objc    '("nil" "Nil" "YES" "NO" "NS_DURING" "NS_HANDLER" "NS_ENDHANDLER" "ASSIGN" "RELEASE" "AUTORELEASE" "RETAIN" "DESTROY" "CREATE_AUTORELEASE_POOL" "RECREATE_AUTORELEASE_POOL")
Index: cc-menus.el
===================================================================
RCS file: /cvsroot/emacs/emacs/lisp/progmodes/cc-menus.el,v
retrieving revision 1.25.2.9
diff -r1.25.2.9 cc-menus.el
332d331
<     (imenu-progress-message stupid 0)
335d333
<       (imenu-progress-message stupid)
387d384
<     (imenu-progress-message stupid 100)
Index: cc-vars.el
===================================================================
RCS file: /cvsroot/emacs/emacs/lisp/progmodes/cc-vars.el,v
retrieving revision 1.31.2.17
diff -r1.31.2.17 cc-vars.el
914a915,953
> (defcustom-c-stylevar objc-method-arg-min-delta-to-bracket 2
>   "*Minimum number of chars to the opening bracket.
> 
> Consider this ObjC snippet:
> 
> 	[foo blahBlah: fred
> 	|<-x->|barBaz: barney
> 
> If `x' is less than this number then `c-lineup-ObjC-method-call-colons'
> will defer the indentation decision to the next function.  By default
> this is `c-lineup-ObjC-method-call', which would align it like:
> 
> 	[foo blahBlahBlah: fred
> 	     thisIsTooDamnLong: barney
> 
> This behaviour can be overridden by customizing the indentation of
> `objc-method-call-cont' in the \"objc\" style."
>   :type 'integer
>   :group 'c)
> 
> (defcustom-c-stylevar objc-method-arg-unfinished-offset 4
>   "*Offset relative to bracket if first selector is on a new line.
> 
>     [aaaaaaaaa
>     |<-x->|bbbbbbb:  cccccc
>              ddddd: eeee];"
>   :type 'integer
>   :group 'c)
> 
> (defcustom-c-stylevar objc-method-parameter-offset 4
>   "*Offset for selector parameter on a new line (relative to first selector.
> 
>     [aaaaaaa bbbbbbbbbb:
> 	     |<-x->|cccccccc
>                     ddd: eeee
>                    ffff: ggg];"
>   :type 'integer
>   :group 'c)
> 
1100c1139,1144
<        (objc-method-call-cont . c-lineup-ObjC-method-call)
---
>        (objc-method-call-cont . (c-lineup-ObjC-method-call-colons
> 			        c-lineup-ObjC-method-call +))
>        ;; Anchor pos: (used by c-lineup-method-call-colons)
>        (objc-method-arg-min-delta-to-bracket	. *)
>        (objc-method-arg-unfinished-offset	. +)
>        (objc-method-parameter-offset		. +)
