
(provide (quote objective-C-mode))

(defun objective-C-mode-version nil "\
3.03a" (byte-code "" [nil] 1))

(defun echo-objective-C-mode-version nil (interactive) (byte-code " %!" [mode-name nil message concat "Version " objective-C-mode-version " of " " mode."] 8))

(defvar objective-C-interface-file-dir nil "\
The directory where to put generated interface files")

(defvar objective-C-document-file-dir nil "\
The directory where to put generated document files")

(defvar objective-C-mode-map nil "\
*Keymap used in objective-C mode.")

(if objective-C-mode-map nil (let ((map (make-sparse-keymap))) (define-key map "c" (quote objective-C-mfile-header)) (define-key map "h" (quote objective-C-hfile-header)) (define-key map "p" (quote objective-C-protocol)) (define-key map "f" (quote objective-C-factory-method)) (define-key map "m" (quote objective-C-instance-method)) (define-key map "l" (quote objective-C-codelimit)) (define-key map "" (quote objective-C-method-comment)) (define-key map "d" (quote generate-Objective-C-documentation)) (define-key map "h" (quote generate-Objective-C-hfile)) (define-key map "?" (quote describe-objective-C-mode)) (define-key map "i" (quote indent-region)) (define-key map "a" (quote add-user-sign)) (define-key map "v" (quote echo-objective-C-mode-version)) (define-key map "{" (quote electric-objective-C-brace)) (define-key map "}" (quote electric-objective-C-brace)) (define-key map ":" (quote electric-objective-C-keyword-match)) (define-key map "" (quote backward-delete-char-untabify)) (define-key map "	" (quote objective-C-indent-command)) (setq objective-C-mode-map map)))

(define-abbrev-table (quote objective-C-mode-abbrev-table) nil)

(defvar objective-C-mode-abbrev-table nil "\
abbrevations to use in objective-c")

(defvar objective-C-mode-syntax-table nil "\
Syntax table in use in Objective-C-Mode buffers.")

(if objective-C-mode-syntax-table nil (setq objective-C-mode-syntax-table (make-syntax-table)) (modify-syntax-entry 92 "\\" objective-C-mode-syntax-table) (modify-syntax-entry 47 ". 14" objective-C-mode-syntax-table) (modify-syntax-entry 42 ". 23" objective-C-mode-syntax-table) (modify-syntax-entry 43 "." objective-C-mode-syntax-table) (modify-syntax-entry 45 "." objective-C-mode-syntax-table) (modify-syntax-entry 61 "." objective-C-mode-syntax-table) (modify-syntax-entry 37 "." objective-C-mode-syntax-table) (modify-syntax-entry 60 "." objective-C-mode-syntax-table) (modify-syntax-entry 62 "." objective-C-mode-syntax-table) (modify-syntax-entry 38 "." objective-C-mode-syntax-table) (modify-syntax-entry 124 "." objective-C-mode-syntax-table) (modify-syntax-entry 39 "\"" objective-C-mode-syntax-table))

(defconst objective-C-indent-level 4 "\
*Indentation of C statements with respect to containing block.")

(defconst objective-C-brace-imaginary-offset 0 "\
*Imagined indentation of a C open brace that actually follows a statement.")

(defconst objective-C-brace-offset -4 "\
*Extra indentation for braces, compared with other text in same context.")

(defconst objective-C-argdecl-indent 5 "\
*Indentation level of declarations of C function arguments.")

(defconst objective-C-label-offset -4 "\
*Offset of C label lines and case statements relative to usual indentation.")

(defconst objective-C-continued-statement-offset 4 "\
*Extra indent for lines not starting new statements.")

(defconst objective-C-auto-newline nil "\
*Non-nil means automatically newline before and after braces,
and after colons and semicolons, inserted in C code.")

(defconst objective-C-tab-always-indent t "\
*Non-nil means TAB in C mode should always reindent the current line,
regardless of where in the line point is when the TAB command is used.")

(defun objective-C-mode nil "\
  A major mode for the Objective-C language.
Commands:
  Expression and list commands understand all Objective-C brackets.
  Tab anywhere on a line indents it according to Objective-C
  conventions. LF does a CR and then an indentation like above.
  Comments are delimited with /* ... */ or // to cr.
  Paragraphs are separated by blank lines only.
  Delete converts tabs to spaces as it moves back.
\\{objective-C-mode-map}

Variables controlling indentation style:
  objective-C-indent-level
    Indentation of C statements within surrounding block.
    The surrounding block's indentation is the indentation
    of the line on which the open-brace appears.

Variables controlling directories of generated files:
    objective-C-interface-file-dir
      If non nil generated interface files will be put into
      this directory. The default is current directory.
    objective-C-document-file-dir
      If non nil generated dokument files will be put into
      this directory. The default is current directory.

Skeletons of the major Objective-C constructs are inserted with:
  C-c c class header    C-c m instanceMethod     C-c f factoryMethod
  C-c p protocol        C-c l limiter            C-c h header in h file
  C-c <RET> method comment

Other useful stuff
  C-c ? Describe objective-C mode
  C-c a Add signature to use in comments
  C-c v Return the version of this mode
  C-c C-c h Generate an interface file from the implementation file
  C-c C-c d Generate an documentation file from the implementation file

Abbreviations:
  ry   & ryes  = return YES
  rn   & rno   = return NO
  rs   & rself = return self
  rnil         = return nil
  imp          = @implementation
  intf         = @interface
  st           = STR
  bo           = BOOL

Turning on Objective-C mode calls the value of the variable
objective-C-mode-hook with abbrevs, if that value is non-nil." (interactive) (byte-code "Έ !؉ى!!P!!݉	!ˉ
!މ!Ή!߉!!!!ˉ!Ή!" [objective-C-mode-map major-mode mode-name local-abbrev-table objective-C-mode-abbrev-table objective-C-mode-syntax-table paragraph-start page-delimiter paragraph-separate indent-line-function require-final-newline t comment-start signatures nil comment-end comment-column comment-start-skip comment-indent-hook parse-sexp-ignore-comments objective-C-line-length super-filename kill-all-local-variables use-local-map objective-C-mode "Objective-C" set-syntax-table make-local-variable "^$\\|" objective-C-indent-line "/* " " */" 32 "/\\*+ *" objective-C-comment-indent 70 run-hooks objective-C-mode-hook] 17))

(defun eb-day (aString) (byte-code "	\"A@? 	 )" [a aString assoc ((" 1" "01") (" 2" "02") (" 3" "03") (" 4" "04") (" 5" "05") (" 6" "06") (" 7" "07") (" 8" "08") (" 9" "09"))] 3))

(defun eb-month (aString) (byte-code "	\"A@? 	 )" [a aString assoc (("JAN" "01") ("FEB" "02") ("MAR" "03") ("APR" "04") ("MAY" "05") ("JUN" "06") ("JUL" "07") ("AUG" "08") ("SEP" "09") ("OCT" "10") ("NOV" "11") ("DEC" "12"))] 3))

(defun eb-date nil "\
Return the current date in an EB Signal standard form" (byte-code " O O! O!%" [nil concat current-time-string -4 "-" eb-month 4 7 eb-day 8 10] 13))

(defun file-type (&optional name) (byte-code "?
   O" [name nil m-filename -2] 4))

(defun m-filename nil (byte-code "!!" [buffer-file-name file-name-nondirectory file-name-sans-versions] 3))

(defun is-m-file (&optional name) (byte-code "!\"" [name string-equal ".m" file-type] 4))

(defun h-filename nil (byte-code " OP" [m-filename 0 -2 ".h"] 4))

(defun h-file-dir nil (byte-code "?	 
 " [objective-C-interface-file-dir ""] 1))

(defun is-h-file (&optional name) (byte-code "!\"" [name string-equal ".h" file-type] 4))

(defun doc-filename nil (byte-code " OP" [m-filename 0 -2 ".txt"] 4))

(defun doc-dir nil (byte-code "?	 
 " [objective-C-document-file-dir ""] 1))

(defun class-from-filename (&optional name) (byte-code "?
   ?   \"O" [name m-filename 0 string-match "\\.\\([0-9]*\\.\\)?\\(m\\|h\\|txt\\)"] 7))

(defun number-from-filename (&optional name) (byte-code "	?
   	\"GZO)" [m-file name m-filename string-match "\\([0-9]*\\)?\\.\\(m\\|h\\)" 2] 6))

(defun super-class nil (byte-code " %P \"!D	 \"!D
@?+ Ă? @?5 Ă? 
!T!T\"," [row row2 a-list b-list nil t concat "@implementation " class-from-filename "\\( \\|	\\|
\\)*" ":" "[a-zA-Z][a-zA-Z0-9$_]*" string-match buffer-string match-end 0 buffer-substring cadr] 13))

(defun super-class-number nil (byte-code " ? Ă&  Q!	\"# 	& 	P*" [sc no nil super-class "NO_SUPER_CLASS_FOUND" read-string "Class number for superclass " ": " string-equal "" "."] 6))

(defun super-hfilename (&optional number) (byte-code " 
?   
? ł 	Q*" [sc no number super-class super-class-number "NO_SUPER_CLASS_FOUND" ".h"] 5))

(defun user-sign nil (byte-code " \"A@" [signatures assoc user-login-name] 4))

(defun cadr (l) (byte-code "A@" [l] 1))

(defun odd (e) "\
True if it's argument is odd." (byte-code "\"=" [e % 2 1] 3))

(defun e-empty-line-p nil "\
True if current line is empty." (byte-code " !)" [beginning-of-line looking-at "^[ \\t]*$"] 3))

(defun insert-right (name diff &optional c) (byte-code "	
G#!  !\"
c*" [u objective-C-line-length name diff fillChar c - char-or-string-p string-to-char " " insert-char] 6))

(defun insert-centered (name diff &optional c) "\
Inserts the name centered in the Objective-C environment
diff is a number that tells how many positions that already
are used on the line (/*     */ = 4) and the optional c
character is used to fill white space with." (byte-code "	
G#\"!  !\"
c!1 T2 \"+" [toshare objective-C-line-length name diff u fillChar c - / 2 char-or-string-p string-to-char " " insert-char odd] 9))

(defun add-user-sign nil (interactive) (byte-code "È Q!	D
B*" [name sign signatures nil user-login-name read-string "Signature for " ": "] 5))

(defun classes-used nil "\
Extract the used classes from the file" (byte-code " !!  !  m?,  ?, !A  Q!  ))" [aString "" beginning-of-buffer re-search-forward "Classes used" forward-line 1 e-empty-line-p beginning-of-line looking-at "#import" grep-class-from-line " "] 13))

(defun beginning-of-line-point (&optional aBool) (byte-code "  !`)" [aBool beginning-of-line skip-chars-forward " 	*/"] 3))

(defun end-of-line-point (&optional aBool) (byte-code "  !`)" [aBool end-of-line skip-chars-backward " 	*/"] 3))

(defun grep-class-from-line nil (byte-code "  \\	Z\"*" [bp ep beginning-of-line-point end-of-line-point buffer-substring 9 3] 6))

(defun start-of-instance-point nil (byte-code " !!  !! !  `)" [beginning-of-buffer search-forward "@implementation" forward-line 1 e-empty-line-p looking-at "{" beginning-of-line] 9))

(defun end-of-instance-point nil (byte-code " !!!  !  `)" [beginning-of-buffer search-forward "@implementation" "}" forward-line -1 e-empty-line-p end-of-line] 8))

(defun have-instance-variables nil (byte-code " !!  ! !!)" [beginning-of-buffer search-forward "@implementation" forward-line 1 e-empty-line-p skip-chars-forward " 	" looking-at "{"] 8))

(defun instance-variables nil (byte-code "    \" Ň" [t have-instance-variables buffer-substring start-of-instance-point end-of-instance-point "	 // none"] 6))

(defun start-of-intro-point nil (byte-code "  #? ł' ! \" !  `)" [t beginning-of-buffer search-forward "Introduction" start-of-instance-point 1 forward-line e-empty-line-p beginning-of-line] 8))

(defun end-of-intro-point nil (byte-code "  #? ł' ! \" !  `)" [t beginning-of-buffer search-forward "Revision History" start-of-instance-point 1 forward-line -1 e-empty-line-p end-of-line] 8))

(defun class-intro nil (byte-code "  	U U 	U ł  	\"*" [si ei start-of-intro-point end-of-intro-point 1 "	Can't extract the class description since the strings
	Introduction and/or Revision History are missing in the source code." buffer-substring] 5))

(defun find-next-protocol-or-method nil (byte-code " m? !? !? !?' !  !4 ! m?" [beginning-of-line looking-at "/\\*=====" "+[a-zA-Z( ]" "-[a-zA-Z( ]" forward-line 1] 10))

(defun line-is-method nil (byte-code " ! !)" [beginning-of-line looking-at "+[a-zA-Z( ]" "-[a-zA-Z( ]"] 4))

(defun line-is-protocol nil (byte-code "! !)" [forward-line -1 beginning-of-line looking-at "/\\*====="] 4))

(defun is-gps-comment nil (byte-code "  ! ))" [ordinary is-ordinary-comment beginning-of-line looking-at "---------"] 4))

(defun is-ordinary-comment nil (byte-code "`Zf\" `Zf\"  f\"?)" [char-equal 42 2 47 1 61 beginning-of-line-point] 6))

(defun is-date-entry nil (byte-code "! ZW" [t 50 beginning-of-line-point] 5))

(defun is-method-name-entry nil (byte-code "!f\" !Zf\"" [t char-equal 124 beginning-of-line-point end-of-line-point 1] 7))

(defun is-empty-line-info nil (byte-code "! \"\"" [t string-equal "" buffer-substring beginning-of-line-point end-of-line-point] 7))

(defun is-not-crap-line nil (byte-code " ?  ?  ?" [is-date-entry is-method-name-entry is-empty-line-info] 4))

(defun look-for-comment-at-previous-line nil (byte-code "! !`f\" `\\f\")" [forward-line -1 beginning-of-line skip-chars-forward "	 " char-equal 47 42 1] 8))

(defun is-still-comment nil (byte-code " !`f\" `\\f\"    )" [t beginning-of-line skip-chars-forward "	 " char-equal 47 42 1 look-for-comment-at-previous-line] 7))

(defun is-objc-comment nil (byte-code " !)" [beginning-of-line looking-at "//"] 3))

(defun gps-comment nil (byte-code " " [ordinary-comment] 2))

(defun ordinary-comment nil (byte-code "! *  ! \" `!\"Q! )" [aStr t "" forward-line -1 is-still-comment beginning-of-line skip-chars-forward " 	*/" is-not-crap-line buffer-substring end-of-line-point "
"] 11))

(defun objc-comment nil (byte-code " &  !  `!\"Q! )" [aStr t "" is-objc-comment beginning-of-line skip-chars-forward "/ " is-not-crap-line buffer-substring end-of-line-point "
" forward-line -1] 10))

(defun no-comment nil "\
This method has not been documented in the source code." (byte-code "" [nil] 1))

(defun line-as-doc-file-delimiter nil (byte-code " !` !`\"Q)" [start beginning-of-line skip-chars-forward " 	" end-of-line skip-chars-backward "
" buffer-substring] 8))

(defun line-as-inteface-file-delimiter nil (byte-code " !` !`\"	G#
\"\"`\"
!B 
\"\\F 
\"\"&)" [start name toshare objective-C-line-length beginning-of-line skip-chars-forward " 	" end-of-line skip-chars-backward buffer-substring - 8 concat "
/* " make-string / 2 45 " " odd 1 " */"] 21))

(defun skip-comment (str) (byte-code "	\"? 	 	O)" [p str t string-match "//" 0] 4))

(defun line-as-inteface-file-method nil (byte-code " !`!!!`\"!P)" [start beginning-of-line skip-chars-forward " 	" re-search-forward "{" backward-char 1 skip-chars-backward " 	
" skip-comment buffer-substring ";"] 9))

(defun extract-method-comment nil (byte-code "!  !  ! \"  8  ,  8  6  8  " [t forward-line -1 e-empty-line-p end-of-line skip-chars-backward " 	" is-gps-comment gps-comment is-ordinary-comment ordinary-comment is-objc-comment objc-comment no-comment] 13))

(defun method-description (method-name start-point) (byte-code "b	 Q)" [start-point method-name "
" extract-method-comment] 4))

(defun line-as-doc-file-method nil (byte-code " !`!!!`\"Q\")" [start beginning-of-line skip-chars-forward " 	" re-search-forward "{" backward-char 1 skip-chars-backward " 	
" method-description "|" buffer-substring] 10))

(defun class-as-short nil (byte-code " !m?  5    *  )  * Q 
 ))" [aString t "" beginning-of-buffer re-search-forward "@implementation" find-next-protocol-or-method line-is-protocol line-as-doc-file-delimiter line-is-method line-as-doc-file-method "
" forward-line] 11))

(defun class-as-short-no-comments nil (byte-code " !m?  5    *  )  * Q 
 ))" [aString t "" beginning-of-buffer re-search-forward "@implementation" find-next-protocol-or-method line-is-protocol line-as-inteface-file-delimiter line-is-method line-as-inteface-file-method "
" forward-line] 11))

(defun describe-objective-C-mode nil (interactive) (byte-code " " [nil describe-mode] 2))

(defun objective-C-mfile-header nil "\
Build a class skeleton prompting for class name." (interactive) (byte-code "ƈ ? !   	\"! ?+   jcZ\"cc# O#cc #c #\"ccccc  %ccZ\"c!c!#!c!c!cP!OP#@ A %B !cC !cD !cE c-F G !H I !J  " [file class nr cname super objective-C-line-length nil is-m-file message "This is not an implementation file (.m)!" m-filename class-from-filename number-from-filename read-string "Class: " "Super: " e-empty-line-p end-of-line newline 0 "/* " insert-char 45 3 "

" "	RDR, Inc. 

" insert "	Objective-C source file for the class " "	COPYRIGHT (C), " current-time-string -4 ", RDR, Inc.
" "	ALL RIGHTS RESERVED.

" "	Responsible:			Approved:
" "	RDR:" user-full-name "		

" "	Date:				Rev:
" "	" eb-date "			___

" insert-centered "	1. Introduction" "


" "	2. Revision History" "	___	The starting point.			" "/" "	3. Source Code" " */

" comment-line "Import files" "#import <appkit/appkit.h>

" " Classes used " "#import \"" " .h\"

" " Externals " " Defines " " Class variables " comment-box "Implementation of class " -1 "h" "\"

" "@implementation " " : " "
{

}

" "Instance Creation" "Initialize" "Free" "@end
" re-search-backward "@implementation" next-line 2 objective-C-indent-line] 39))

(defun objective-C-hfile-header (&optional classname super-filename) "\
Gives an interface file sceleton." (interactive) (byte-code "ǈ ? ! 	?   	\" ?/ !P0 cZ\"cc
# O#cc #c #cc
P!#
!%c,!! " [class classname cname nr super super-filename objective-C-line-length nil is-h-file message "This is not an interface file (.h)!" class-from-filename read-string "Class: " number-from-filename "Super: " ".h" "/* " insert-char 45 3 "

" "	RDR, Inc. 

" insert "	Objective-C interface file for the class " "	COPYRIGHT (C), " current-time-string -4 ", RDR, Inc.
" "	ALL RIGHTS RESERVED.

" "	Responsible:			Approved:
" "	RDR:" user-full-name "		

" "	Date:				Rev:
" "	" eb-date "			___

" "	Reference:			Document no:
" " */

" comment-box "Interface of class " "#import \"" "\"

" "@interface " " : " "
{

}

" "@end
" re-search-backward "@interface" next-line 2 objective-C-indent-line] 23))

(defun generate-Objective-C-hfile nil "\
Generate the interface file for the current implementation file." (interactive) (byte-code "Ȉ  P\"!     	q!cZ\"cc
# O#cc #c #cc
P!#
!%cccc 	!." [file-name buf class no instance short super objective-C-line-length nil read-string "Interface file name: " h-file-dir h-filename create-file-buffer class-from-filename number-from-filename instance-variables class-as-short-no-comments super-hfilename set-visited-file-name "/* " insert-char 45 3 "

" "	RDR, Inc. 

" insert "	Objective-C interface file for the class " "	COPYRIGHT (C), " current-time-string -4 ", RDR, Inc.
" "	ALL RIGHTS RESERVED.

" "	Responsible:			Approved:
" "	RDR:" user-full-name "		

" "	Date:				Rev:
" "	" eb-date "			___

" "	Reference:			Document no:
" " */

" comment-box "Interface of class " "#import \"" "\"

" "@interface " " : " "
{
" "
}
" "
@end
" beginning-of-buffer display-buffer] 27))

(defun generate-Objective-C-documentation nil "\
Open a new buffer and write the documentation there." (interactive) (byte-code "ʈ  P\"!       	q!j	\"cc# O#c #c #cc\"#
#&&\"ccc\"ccc\"ccc 	!.	" [file-name buf used class super no instance short intro objective-C-line-length nil read-string "Documentation file name: " doc-dir doc-filename create-file-buffer classes-used class-from-filename super-class number-from-filename instance-variables class-as-short class-intro set-visited-file-name 0 insert-char 45 "

" "	RDR, Inc. 

" insert "	Objective-C documentation file for the class " "
" "	COPYRIGHT (C), " current-time-string -4 ", RDR, Inc.

" "	Responsible:			Approved:
" "	RDR:" user-full-name "		

" "	Date:				Rev:
" "	" eb-date "			___

" "	Reference:			Document no:
" "


" insert-centered "


	Inherits from:		" "	Classes used:		" "	Interface file:		" "." ".h" "	Implementation file:	" ".m" "Introduction" "Instance Variables" "Methods" "
End
" beginning-of-buffer display-buffer] 31))

(defun comment-box (name) "\
Print name in an comment-box" (byte-code " ?   c#c!#c#c" [name e-empty-line-p end-of-line newline "/*" insert-centered "" 2 61 "
" 0 string-to-char " " "*/
"] 10))

(defun comment-line (name) "\
Print name in an comment-line" (byte-code " ?   cQ#c" [name e-empty-line-p end-of-line newline "/* " insert-centered " " 6 45 " */
"] 7))

(defun objective-C-protocol nil "\
Build a protocol skeleton prompting for protocol name." (interactive) (byte-code "!!" [nil comment-box read-string "Protocol name: "] 3))

(defun objective-C-codelimit nil "\
Print name on a centered line." (interactive) (byte-code "!!" [nil comment-line read-string "Centered text: "] 3))

(defun objective-C-method (prefix name) (byte-code "jc#c	\" ς  %  Q\"c#c	#c
j\"P cR c
jcc!" [prefix name objective-C-indent-level 0 "/*" insert-centered "" 2 45 "
" insert "|" "| 
" string-equal "-" "Return self.
" insert-right user-full-name "/" eb-date "*/
" "{
" "+" "self = [super new];
" "return self;
" "}

" next-line -4] 11))

(defun objective-C-method-comment nil "\
Insert a comment according to the style used with methods in GPS" (interactive) (byte-code "jc#c  Q\"c#c" [nil 0 "/*" insert-centered "" 2 45 "


" insert-right user-full-name "/" eb-date "
" "*/
"] 8))

(defun objective-C-instance-method nil "\
Build a routine skeleton prompting for method name." (interactive) (byte-code " ?   !\"" [nil e-empty-line-p end-of-line newline objective-C-method "-" read-string "Instance method name: "] 7))

(defun objective-C-factory-method nil "\
Build a routine skeleton prompting for method name." (interactive) (byte-code " ?   !\"" [nil e-empty-line-p end-of-line newline objective-C-method "+" read-string "Factory method name: "] 7))

(defun objective-C-comment-indent nil (byte-code "!
 Â !iT])" [comment-column looking-at "^/\\*" 0 skip-chars-backward " 	"] 4))

(defun electric-objective-C-keyword-match nil "\
Match two following lines with keyword arguments" (interactive) (byte-code "c" [nil ":"] 1))

(defun electric-objective-C-brace (arg) "\
Insert character and correct line's indentation." (interactive "P") (byte-code "Ĉ	?& l& !n)& 
%   Â& ąK c 
= `S  F Tb!)] b	!!)b 	!!)" [insertpos arg objective-C-auto-newline t nil last-command-char skip-chars-backward " 	" objective-C-indent-line newline delete-char -1 self-insert-command prefix-numeric-value] 12))

(defun electric-objective-C-semi (arg) "\
Insert character and correct line's indentation." (interactive "P") (byte-code " 	! 	!!" [objective-C-auto-newline arg nil electric-objective-C-terminator self-insert-command prefix-numeric-value] 4))

(defun electric-objective-C-terminator (arg) "\
Insert character and correct line's indentation." (interactive "P") (byte-code "ƈ`
?P lP  !gUN =3 !?3 !`	X)N  `	\"8M 8M 8))?{ c m  ?m `S  v Tb!) b
!!) 
!!*" [insertpos end arg last-command-char pps objective-C-auto-newline nil beginning-of-line skip-chars-forward " 	" 35 58 looking-at "case" forward-word 2 beginning-of-defun parse-partial-sexp 3 4 5 objective-C-indent-line objective-C-inside-parens-p newline delete-char -1 self-insert-command prefix-numeric-value] 16))

(defun objective-C-inside-parens-p nil (byte-code "" [nil (byte-code "` `\"db`# efU))" [narrow-to-region beginning-of-defun scan-lists -1 1 40] 6) ((error (byte-code "" [nil] 1)))] 3))

(defun objective-C-indent-command (&optional whole-exp) (interactive "P") (byte-code "ňƈ?    `!`
b!`)
V; 
	$+V ?L !n?)T  V  " [whole-exp shift-amt beg end objective-C-tab-always-indent nil "Indent current line as C code, or in some cases insert a tab character.
If objective-C-tab-always-indent is non-nil (the default), always indent current line.
Otherwise, indent the current line only if point is at the left margin
or in the line's indentation; otherwise insert a tab.

A numeric argument, regardless of its value,
means indent rigidly all the lines of the expression starting after point
so that this line becomes properly indented.
The relative indentation among the lines of the expression are preserved." objective-C-indent-line beginning-of-line forward-sexp 1 forward-line indent-code-rigidly "#" skip-chars-backward " 	" insert-tab] 9))

(defun objective-C-indent-line nil "\
Indent current line as C code.
Return the amount the indentation changed by." (byte-code "!d`Z `=\"   =/   !; Љ !<H @!^ !^ !!)l \\] !v !?   ) gU Z gU 	\\!iZ! dZ`V dZb 
`\"jdZ`V dZb-" [indent nil beg shift-amt case-fold-search pos t objective-C-label-offset objective-C-indent-level objective-C-brace-offset calculate-objective-C-indent beginning-of-line current-indentation calculate-objective-C-indent-within-comment looking-at "[ 	]*#" 0 skip-chars-forward " 	" "case\\b" "[A-Za-z]" forward-sexp 1 ":" "else\\b" "else\\s_" objective-C-backward-to-start-of-if 125 123 zerop delete-region] 19))

(defun calculate-objective-C-indent (&optional parse-start) "\
Return appropriate indentation for current line as C code.
In usual case returns an integer: the column to indent to.
Returns nil if line starts inside a string, t if in a comment." (byte-code " ` b  `W3 ``#A@ 8= 8F 8? b!gU\\ ҂ b e!#! ! !Sb!`W g>?  )o h> ҂ \\)f\" Tbib!h= h= `Zf= `Zf!> h= ! ! h>?!	i\\b!
!!OgU,!KgU>!#K `
)!`Wf
`Ve Zfi))nt!	\\!n҂h=! #,)" [indent-point case-fold-search nil state containing-sexp parse-start basic-indent objective-C-argdecl-indent t objective-C-continued-statement-offset colon-line-end objective-C-label-offset objective-C-indent-level objective-C-brace-offset objective-C-brace-imaginary-offset beginning-of-line beginning-of-defun parse-partial-sexp 0 3 4 skip-chars-forward " 	" 123 objective-C-backward-to-noncomment re-search-backward "^[^ 	
#]" move looking-at "\\sw\\|\\s_" ".*(" match-end forward-sexp 1 (44 59) (41 59 125) /= 44 58 2 39 char-syntax (119 95) objective-C-backward-to-start-of-continued-exp (nil 44 59 125 123) forward-char " 	
" "#\\|/\\*\\|case[ 	
].*:\\|[a-zA-Z0-9_$]*:" 35 forward-line 47 search-forward "*/" end-of-line ":" current-indentation + zerop skip-chars-backward 41 -1] 34))

(defun calculate-objective-C-indent-within-comment nil "\
Return the indentation amount for line, assuming that
the current line is to be regarded as part of a block comment." (byte-code " !gU!` !#2 	2 !Tbi)*" [end star-start t nil beginning-of-line skip-chars-forward " 	" 42 skip-chars-backward " 	
" re-search-forward "/\\*[ 	]*" match-beginning 0] 9))

(defun objective-C-backward-to-noncomment (lim) (byte-code "	?M 
\"``
\\Y# !!). 
#I  !!C `
XI Éb *" [opoint stop lim t nil skip-chars-backward " 	
" 2 forward-char -2 looking-at "\\*/" search-backward "/*" move beginning-of-line skip-chars-forward " 	" "#"] 10))

(defun objective-C-backward-to-start-of-continued-exp (lim) (byte-code "hU	 ! `X Tb!" [lim 41 forward-sexp -1 beginning-of-line skip-chars-forward " 	"] 4))

(defun objective-C-backward-to-start-of-if (&optional limit) "\
Move to the start of the last ``unbalanced'' if." (byte-code "  `)	!?F !!) 	TB !6 	SB `WB ˉb *" [limit if-level case-fold-search nil beginning-of-defun 1 zerop backward-sexp looking-at "else\\b" "if\\b" 0] 8))

(defun mark-objective-C-function nil "\
Put mark at end of C function, point at beginning." (interactive) (byte-code "`! `!  " [nil push-mark end-of-defun beginning-of-defun backward-paragraph] 6))
