mirror of
https://github.com/joaotavora/yasnippet.git
synced 2025-10-13 21:13:04 +00:00
tweaking some basic objc snippets
This commit is contained in:
parent
a090443417
commit
f1ce4866b6
@ -1,4 +1,24 @@
|
||||
;;; conditions
|
||||
;;; constants
|
||||
(defvar yas/objc-void-regexp "\\(void\\|IBAction\\)")
|
||||
|
||||
|
||||
;;; helper stuff
|
||||
(defun yas/objc-guess-instance-name (text)
|
||||
(if (string-match "NS\\(\\([AEIOQUY]\\)?[^ *]*\\)" text)
|
||||
(if (match-beginning 2)
|
||||
(concat "an" (capitalize (match-string-no-properties 1 text)))
|
||||
(concat "a" (capitalize (match-string-no-properties 1 text))))
|
||||
"arg"))
|
||||
|
||||
(defun yas/objc-guess-member-name (text)
|
||||
"Turns FOOBARBaz to baz"
|
||||
(let ((case-fold-search nil))
|
||||
(if (string-match "[A-Z]+\\([A-Z]\\)\\(.*\\)" text)
|
||||
(concat (downcase (match-string-no-properties 1 text))
|
||||
(match-string-no-properties 2 text))
|
||||
text)))
|
||||
|
||||
;;; cached conditions
|
||||
(yas/define-condition-cache
|
||||
yas/objc-interface-p
|
||||
"Non-nil if point inside an objc @interface declaration."
|
||||
@ -11,10 +31,10 @@
|
||||
|
||||
(yas/define-condition-cache
|
||||
yas/objc-method-body-p
|
||||
"Non-nil if point inside an objc @implementation declaration."
|
||||
"Non-nil if point inside an objc method definition."
|
||||
(yas/objc-in-c-block-like 'objc-method-intro))
|
||||
|
||||
|
||||
;;; helpers for cached conditions
|
||||
(defun yas/objc-in-c-block-like (symbol-or-regexp)
|
||||
(let ((original-point (point))
|
||||
(start-point nil))
|
||||
|
@ -2,6 +2,7 @@
|
||||
# key: log
|
||||
# contributor: Translated from TextMate Snippet
|
||||
# name: NSLog(…)
|
||||
## condition: "source.objc, source.objc++"
|
||||
# condition: (and (yas/objc-implementation-p) (yas/objc-method-body-p))
|
||||
# --
|
||||
NSLog(@"$1"${1/[^%]*(%)?.*/(?1:, :\);)/}$2${1/[^%]*(%)?.*/(?1:\);)/}
|
||||
NSLog(@"${1:%@}"${1:$(if (string-match "%" text) ", " ");")
|
||||
}$2${1:$(if (string-match "%" text) ");" "")}$0
|
||||
|
@ -2,10 +2,9 @@
|
||||
# key: m
|
||||
# contributor: Translated from TextMate Snippet
|
||||
# name: Method
|
||||
## binding: "^M"
|
||||
## condition: "(source.objc | source.objc++) & meta.scope.implementation.objc - meta.function-with-body"
|
||||
# binding: C-c m
|
||||
# condition: (and (yas/objc-implementation-p) (not (yas/objc-method-body-p)))
|
||||
# --
|
||||
- (${1:id})${2:${TM_SELECTED_TEXT:method}}${3::(${4:id})${5:${4/(NS([AEIOQUY])?(\w+).*)|(.)?.*/(?1:a(?2:n$2)$3:(?4:anArgument))/}}}
|
||||
{$0${1/^(void|IBAction)$|(.*)/(?2:
|
||||
return nil;)/}
|
||||
}
|
||||
- (${1:id})${2:`(or yas/selected-text "method")`}${3::(${4:id})${5:${4:$(
|
||||
yas/objc-guess-instance-name yas/text)}}} {$0${1:$(if (
|
||||
string-match yas/objc-void-regexp text) "}" "\n return nil;\n}")}
|
@ -2,10 +2,10 @@
|
||||
# key: sm
|
||||
# contributor: Translated from TextMate Snippet
|
||||
# name: Sub-method (Call Super)
|
||||
## condition: "(source.objc | source.objc++) & meta.scope.implementation.objc - meta.function-with-body"
|
||||
# condition: (and (yas/objc-implementation-p) (not (yas/objc-method-body-p)))
|
||||
# --
|
||||
- (${1:id})${2:method}${3::(${4:id})${5:${4/(NS([AEIOQUY])?(\w+).*)|(.)?.*/(?1:a(?2:n$2)$3:(?4:anArgument))/}}}
|
||||
{
|
||||
${1/^(void|IBAction)$|(.*)/(?2:$2 res = )/}[super ${2:method}${5/.+/:$0/}];$0${1/^(void|IBAction)$|(.*)/(?2:
|
||||
return res;)/}
|
||||
- (${1:id})${2:`(or yas/selected-text "method")`}${3::(${4:id})${5:${4:$(
|
||||
yas/objc-guess-instance-name yas/text)}}} {
|
||||
${1:$(if (string-match yas/objc-void-regexp text) "" "res = ")}[super $2${5:$(
|
||||
if (string= yas/text "") "" (concat ":" yas/text))}];${1:$(if (string-match yas/objc-void-regexp text) "" "\n return res;")}
|
||||
}
|
@ -2,9 +2,8 @@
|
||||
# key: M
|
||||
# contributor: Translated from TextMate Snippet
|
||||
# name: Class Method
|
||||
## condition: "(source.objc | source.objc++) & meta.scope.implementation.objc - meta.function-with-body"
|
||||
# condition: (and (yas/objc-implementation-p) (not (yas/objc-method-body-p)))
|
||||
# --
|
||||
+ (${1:id})${2:method}${3::(${4:id})${5:${4/(NS([AEIOQUY])?(\w+).*)|(.)?.*/(?1:a(?2:n$2)$3:(?4:anArgument))/}}}
|
||||
{$0${1/^(void|IBAction)$|(.*)/(?2:
|
||||
return nil;)/}
|
||||
}
|
||||
+ (${1:id})${2:`(or yas/selected-text "method")`}${3::(${4:id})${5:${4:$(
|
||||
yas/objc-guess-instance-name yas/text)}}} {$0${1:$(if (
|
||||
string-match yas/objc-void-regexp text) "}" "\n return nil;\n}")}
|
||||
|
@ -2,6 +2,6 @@
|
||||
# key: ibo
|
||||
# contributor: Translated from TextMate Snippet
|
||||
# name: IBOutlet
|
||||
## condition: "source.objc, source.objc++"
|
||||
# condition: (yas/objc-interface-p)
|
||||
# --
|
||||
IBOutlet ${1:NSSomeClass}${TM_C_POINTER: *}${2:${1/^[A-Z](?:[A-Z]+|[a-z]+)([A-Z]\w*)/\l$1/}};
|
||||
IBOutlet ${1:NSSomeClass}*${2:${1:$(yas/objc-guess-member-name yas/text)}};
|
@ -2,7 +2,7 @@
|
||||
# key: I
|
||||
# contributor: Translated from TextMate Snippet
|
||||
# name: Method: Initialize
|
||||
## condition: "(source.objc | source.objc++) & meta.scope.implementation.objc - meta.function-with-body"
|
||||
# condition: (and (yas/objc-implementation-p) (not (yas/objc-method-body-p)))
|
||||
# --
|
||||
+ (void)initialize
|
||||
{
|
||||
|
@ -2,7 +2,7 @@
|
||||
# key: m
|
||||
# contributor: Translated from TextMate Snippet
|
||||
# name: Interface: Method
|
||||
## binding: "^M"
|
||||
## condition: "source.objc meta.scope.interface, source.objc++ meta.scope.interface"
|
||||
# binding: "C-c m"
|
||||
# condition: (yas/objc-interface-p)
|
||||
# --
|
||||
- (${1:id})${2:${TM_SELECTED_TEXT:method}}${3::(${4:id})${5:${4/(NS([AEIOQUY])?(\w+).*)|(.)?.*/(?1:a(?2:n$2)$3:(?4:anArgument))/}}};
|
@ -1,7 +0,0 @@
|
||||
# -*- mode: snippet -*-
|
||||
# key: log
|
||||
# contributor: Translated from TextMate Snippet
|
||||
# name: NSLog(.., _cmd)
|
||||
## condition: "source.objc meta.scope.implementation, source.objc++ meta.scope.implementation"
|
||||
# --
|
||||
NSLog(@"%s$1", _cmd${1/[^%]*(%)?.*/(?1:, :\);)/}$2${1/[^%]*(%)?.*/(?1:\);)/}
|
Loading…
x
Reference in New Issue
Block a user