mirror of
https://github.com/joaotavora/yasnippet.git
synced 2025-10-14 05:23:04 +00:00
tweaking the ruby-mode snippets slightly
This commit is contained in:
parent
295972897f
commit
1c812b8692
@ -17,11 +17,10 @@
|
|||||||
((string-match "_" fn) (replace-match "" nil nil fn))
|
((string-match "_" fn) (replace-match "" nil nil fn))
|
||||||
(t fn))))
|
(t fn))))
|
||||||
|
|
||||||
(defun yas/ruby-in-interpolated-string-p ()
|
;; conditions
|
||||||
(eq (fourth (syntax-ppss))
|
;;
|
||||||
?\"))
|
(yas/define-condition-cache yas/ruby-in-interpolated-string-p (eq (fourth (syntax-ppss)) ?\"))
|
||||||
|
(yas/define-condition-cache yas/ruby-in-comment-p (fifth (syntax-ppss)))
|
||||||
(defun yas/ruby-in-comment-p ()
|
(yas/define-condition-cache yas/ruby-in-string-p (fourth (syntax-ppss)))
|
||||||
(fifth (syntax-ppss)))
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -1,9 +1,13 @@
|
|||||||
# -*- mode: snippet -*-
|
# -*- mode: snippet -*-
|
||||||
|
# type: command
|
||||||
# key: {
|
# key: {
|
||||||
# contributor: Translated from TextMate Snippet
|
# contributor: Translated from TextMate Snippet
|
||||||
# assumes some sort of autopairing of the braces such as autopair.el or ruby electric
|
|
||||||
# that would have added the closing brace.
|
|
||||||
# name: Insert { |variable| … }
|
# name: Insert { |variable| … }
|
||||||
## condition: "source.ruby - string - comment"
|
# condition: (not (or (yas/ruby-in-comment-p) (yas/ruby-in-string-p)))
|
||||||
# --
|
# --
|
||||||
{ ${1:$(if (string= yas/text "") "" "|")}${1:variable}${1:$(if (string= yas/text "") "" "|")}${2:`yas/selected-text`}
|
(yas/expand-snippet (concat
|
||||||
|
"{ ${1:$(if (string= yas/text \"\") \"\" \"|\")}${1:variable}${1:$(if (string= yas/text \"\") \" \" \"| \")}`yas/selected-text`$0"
|
||||||
|
(save-excursion (if (search-forward-regexp "}" (line-end-position) t)
|
||||||
|
"" "}"))))
|
||||||
|
|
||||||
|
|
||||||
|
@ -4,6 +4,6 @@
|
|||||||
# name: New Block
|
# name: New Block
|
||||||
## condition: "source.ruby"
|
## condition: "source.ruby"
|
||||||
# --
|
# --
|
||||||
`[[ $TM_LINE_INDEX != 0 ]] && echo; echo`=begin rdoc
|
`(if (save-restriction (widen) (eq 1 (line-number-at-pos))) "\n\n" "\n")`=begin rdoc
|
||||||
$0
|
$0
|
||||||
=end
|
=end
|
@ -2,6 +2,6 @@
|
|||||||
# key: y
|
# key: y
|
||||||
# contributor: Translated from TextMate Snippet
|
# contributor: Translated from TextMate Snippet
|
||||||
# name: :yields:
|
# name: :yields:
|
||||||
## condition: "source.ruby comment"
|
# condition: (yas/ruby-in-comment-p)
|
||||||
# --
|
# --
|
||||||
:yields: ${0:arguments}
|
:yields: ${1:arguments}
|
30
yasnippet.el
30
yasnippet.el
@ -447,13 +447,8 @@ Attention: These hooks are not run when exiting nested/stackd snippet expansion!
|
|||||||
"Hooks to run just before expanding a snippet.")
|
"Hooks to run just before expanding a snippet.")
|
||||||
|
|
||||||
(defvar yas/buffer-local-condition
|
(defvar yas/buffer-local-condition
|
||||||
'(if (and (not (bobp))
|
'(if (or (fourth (syntax-ppss))
|
||||||
(or (equal 'font-lock-comment-face
|
(fifth (syntax-ppss)))
|
||||||
(get-char-property (1- (point))
|
|
||||||
'face))
|
|
||||||
(equal 'font-lock-string-face
|
|
||||||
(get-char-property (1- (point))
|
|
||||||
'face))))
|
|
||||||
'(require-snippet-condition . force-in-comment)
|
'(require-snippet-condition . force-in-comment)
|
||||||
t)
|
t)
|
||||||
"Snippet expanding condition.
|
"Snippet expanding condition.
|
||||||
@ -1052,11 +1047,9 @@ conditions to filter out potential expansions."
|
|||||||
(symbolp (cdr local-condition))
|
(symbolp (cdr local-condition))
|
||||||
(cdr local-condition)))))))
|
(cdr local-condition)))))))
|
||||||
|
|
||||||
(defun yas/template-can-expand-p (condition &optional requirement)
|
(defun yas/template-can-expand-p (condition requirement)
|
||||||
"Evaluates CONDITION and REQUIREMENT and returns a boolean"
|
"Evaluates CONDITION and REQUIREMENT and returns a boolean"
|
||||||
(let* ((requirement (or requirement
|
(let* ((result (or (null condition)
|
||||||
(yas/require-template-specific-condition-p)))
|
|
||||||
(result (or (null condition)
|
|
||||||
(yas/eval-condition condition))))
|
(yas/eval-condition condition))))
|
||||||
(cond ((eq requirement t)
|
(cond ((eq requirement t)
|
||||||
result)
|
result)
|
||||||
@ -1922,11 +1915,19 @@ will only be expanded when the condition evaluated to non-nil."
|
|||||||
;;;
|
;;;
|
||||||
(defvar yas/condition-cache-timestamp nil)
|
(defvar yas/condition-cache-timestamp nil)
|
||||||
(defmacro yas/define-condition-cache (func doc &rest body)
|
(defmacro yas/define-condition-cache (func doc &rest body)
|
||||||
`(defun ,func () ,(when doc
|
"Define a function FUNC with doc DOC and body BODY, BODY is
|
||||||
|
executed at most once every snippet expansion attempt, to check
|
||||||
|
expansion conditions.
|
||||||
|
|
||||||
|
It doesn't make any sense to call FUNC programatically."
|
||||||
|
`(defun ,func () ,(if (and doc
|
||||||
|
(stringp doc))
|
||||||
(concat doc
|
(concat doc
|
||||||
"\n\nFor use in snippets' conditions. Within each
|
"\n\nFor use in snippets' conditions. Within each
|
||||||
snippet-expansion routine like `yas/expand', computes actual
|
snippet-expansion routine like `yas/expand', computes actual
|
||||||
value for the first time then always returns a cached value."))
|
value for the first time then always returns a cached value.")
|
||||||
|
(setq body (cons doc body))
|
||||||
|
nil)
|
||||||
(let ((timestamp-and-value (get ',func 'yas/condition-cache)))
|
(let ((timestamp-and-value (get ',func 'yas/condition-cache)))
|
||||||
(if (equal (car timestamp-and-value) yas/condition-cache-timestamp)
|
(if (equal (car timestamp-and-value) yas/condition-cache-timestamp)
|
||||||
(cdr timestamp-and-value)
|
(cdr timestamp-and-value)
|
||||||
@ -3043,12 +3044,13 @@ will be deleted before inserting template."
|
|||||||
;; them mostly to make the undo information
|
;; them mostly to make the undo information
|
||||||
;;
|
;;
|
||||||
(setq yas/start-column (save-restriction (widen) (current-column)))
|
(setq yas/start-column (save-restriction (widen) (current-column)))
|
||||||
(insert template)
|
|
||||||
|
|
||||||
(setq snippet
|
(setq snippet
|
||||||
(if expand-env
|
(if expand-env
|
||||||
(eval `(let ,expand-env
|
(eval `(let ,expand-env
|
||||||
|
(insert template)
|
||||||
(yas/snippet-create (point-min) (point-max))))
|
(yas/snippet-create (point-min) (point-max))))
|
||||||
|
(insert template)
|
||||||
(yas/snippet-create (point-min) (point-max))))))
|
(yas/snippet-create (point-min) (point-max))))))
|
||||||
|
|
||||||
;; stacked-expansion: This checks for stacked expansion, save the
|
;; stacked-expansion: This checks for stacked expansion, save the
|
||||||
|
Loading…
x
Reference in New Issue
Block a user