mirror of
https://github.com/joaotavora/yasnippet.git
synced 2025-10-14 05:23:04 +00:00
Working on the rails snippets and conditions
This commit is contained in:
parent
3d0262d67f
commit
f7bf0f4f38
@ -1,8 +1,8 @@
|
|||||||
(defvar yas/rails-root-cache nil)
|
(defvar yas/rails-root-cache nil)
|
||||||
(make-local-variable 'yas/rails-root-cache)
|
(make-local-variable 'yas/rails-root-cache)
|
||||||
|
|
||||||
;; copied from rinari-mode's rinari-root
|
;; stolen from rinari-mode's rinari-root
|
||||||
(defun yas/rails-root (&optional dir home)
|
(defun yas/rails-root (&optional dir)
|
||||||
(or yas/rails-root-cache
|
(or yas/rails-root-cache
|
||||||
(or dir (setq dir default-directory))
|
(or dir (setq dir default-directory))
|
||||||
(if (file-exists-p (expand-file-name
|
(if (file-exists-p (expand-file-name
|
||||||
@ -13,7 +13,7 @@
|
|||||||
(unless (string-match "\\(^[[:alpha:]]:/$\\|^/[^\/]+:\\|^/$\\)" dir)
|
(unless (string-match "\\(^[[:alpha:]]:/$\\|^/[^\/]+:\\|^/$\\)" dir)
|
||||||
(rinari-root new-dir))))))
|
(rinari-root new-dir))))))
|
||||||
|
|
||||||
;; copied from rinari-mode's rinari-extract-partial
|
;; stolen from rinari-mode's rinari-extract-partial
|
||||||
(defun yas/rails-extract-partial (begin end partial-name)
|
(defun yas/rails-extract-partial (begin end partial-name)
|
||||||
(interactive "r\nsName your partial: ")
|
(interactive "r\nsName your partial: ")
|
||||||
(let* ((path (buffer-file-name)) ending)
|
(let* ((path (buffer-file-name)) ending)
|
||||||
@ -31,23 +31,9 @@
|
|||||||
(yank) (pop-to-buffer nil)
|
(yank) (pop-to-buffer nil)
|
||||||
(insert (concat "<%= render :partial => '" partial-name "' %>\n")))
|
(insert (concat "<%= render :partial => '" partial-name "' %>\n")))
|
||||||
(message "not in a view"))))
|
(message "not in a view"))))
|
||||||
|
;;;
|
||||||
(defun yas/rails-model-p ()
|
;;; The TextMate "intelligent" migration snippet
|
||||||
(and (yas/rails-root)
|
;;
|
||||||
(string-match "app/models/$" default-directory)))
|
|
||||||
|
|
||||||
(defun yas/rails-view-p ()
|
|
||||||
(and (yas/rails-root)
|
|
||||||
(string-match "app/views/" default-directory)))
|
|
||||||
|
|
||||||
(defun yas/rails-controller-p ()
|
|
||||||
(and (yas/rails-root)
|
|
||||||
(string-match "app/controllers/$" default-directory)))
|
|
||||||
|
|
||||||
(defun yas/rails-migration-p ()
|
|
||||||
(and (yas/rails-root)
|
|
||||||
(string-match "db/migrate/" default-directory)))
|
|
||||||
|
|
||||||
(defvar yas/rails-intelligent-migration-snippet-bits
|
(defvar yas/rails-intelligent-migration-snippet-bits
|
||||||
'((:rename_column . ((:up . "rename_column :${1:table_name}, :${2:column_name}, :${3:new_column_name}$0")
|
'((:rename_column . ((:up . "rename_column :${1:table_name}, :${2:column_name}, :${3:new_column_name}$0")
|
||||||
(:down . "rename_column :$1, :$3, :$2" )))
|
(:down . "rename_column :$1, :$3, :$2" )))
|
||||||
@ -67,6 +53,9 @@
|
|||||||
(:add_remove_column_continue . ((:up . "add_column :${1:table_name}, :${2:column_name}, :${3:string}\nmarcc$0")
|
(:add_remove_column_continue . ((:up . "add_column :${1:table_name}, :${2:column_name}, :${3:string}\nmarcc$0")
|
||||||
(:down . "remove_column :$1, :$2" )))
|
(:down . "remove_column :$1, :$2" )))
|
||||||
|
|
||||||
|
(:remove_add_column . ((:up . "remove_column :${1:table_name}, :${2:column_name}$0")
|
||||||
|
(:down . "add_column :$1, :$2, :$3{string}" )))
|
||||||
|
|
||||||
(:create_drop_table . ((:up . "create_table :${1:table_name}, :force . true do |t|\nt.$0\nt.timestamps\nend")
|
(:create_drop_table . ((:up . "create_table :${1:table_name}, :force . true do |t|\nt.$0\nt.timestamps\nend")
|
||||||
(:down . "drop_table :$1" )))
|
(:down . "drop_table :$1" )))
|
||||||
|
|
||||||
@ -93,5 +82,63 @@
|
|||||||
(and up down start end (concat up
|
(and up down start end (concat up
|
||||||
(buffer-substring-no-properties start end)
|
(buffer-substring-no-properties start end)
|
||||||
"\n" down))))
|
"\n" down))))
|
||||||
|
(when snippet
|
||||||
(delete-region start end)
|
(delete-region start end)
|
||||||
(yas/expand-snippet snippet)))
|
(yas/expand-snippet snippet))))
|
||||||
|
|
||||||
|
(yas/define-condition-cache
|
||||||
|
yas/rails-intelligent-migration-snippet-condition-p
|
||||||
|
"Non-nil if an \"intelligent\" migration snippet should be expanded"
|
||||||
|
(and (yas/rails-migration-p)
|
||||||
|
(not (yas/rails-in-create-table-p))
|
||||||
|
(not (yas/rails-in-change-table-p))
|
||||||
|
(yas/rails-in-ruby-block-like "self\.up")))
|
||||||
|
|
||||||
|
(defun yas/rails-in-ruby-block-like (regexp)
|
||||||
|
(save-excursion
|
||||||
|
(ruby-accurate-end-of-block)
|
||||||
|
(ruby-backward-sexp)
|
||||||
|
(search-forward-regexp regexp (line-end-position) t)))
|
||||||
|
|
||||||
|
;;; conditions
|
||||||
|
(yas/define-condition-cache
|
||||||
|
yas/rails-in-create-table-p
|
||||||
|
"Non-nil if point is inside a 'create_table' method call."
|
||||||
|
(yas/rails-in-ruby-block-like "create_table"))
|
||||||
|
|
||||||
|
(yas/define-condition-cache
|
||||||
|
yas/rails-in-change-table-p
|
||||||
|
"Non-nil if point is inside a 'change_table' method call."
|
||||||
|
(yas/rails-in-ruby-block-like "change_table"))
|
||||||
|
|
||||||
|
(yas/define-condition-cache
|
||||||
|
yas/rails-model-p
|
||||||
|
"Non-nil if the current buffer is a rails model."
|
||||||
|
(and (yas/rails-root)
|
||||||
|
(string-match "app/models/$" default-directory)))
|
||||||
|
|
||||||
|
(yas/define-condition-cache
|
||||||
|
yas/rails-view-p
|
||||||
|
"Non-nil if the current buffer is a rails view."
|
||||||
|
(and (yas/rails-root)
|
||||||
|
(string-match "app/views/" default-directory)))
|
||||||
|
|
||||||
|
(yas/define-condition-cache
|
||||||
|
yas/rails-controller-p
|
||||||
|
"Non-nil if the current buffer is a rails controller."
|
||||||
|
(and (yas/rails-root)
|
||||||
|
(string-match "app/controllers/$" default-directory)))
|
||||||
|
|
||||||
|
(yas/define-condition-cache
|
||||||
|
yas/rails-migration-p
|
||||||
|
"Non-nil if the current buffer is a rails migration."
|
||||||
|
(and (yas/rails-root)
|
||||||
|
(string-match "db/migrate/" default-directory)))
|
||||||
|
|
||||||
|
|
||||||
|
(defadvice cd (after yas/rails-on-cd-activate)
|
||||||
|
"Active/Deactive rinari-merb-minor-node when changing into and out
|
||||||
|
of raills project directories."
|
||||||
|
(setq yas/rails-root-cache nil)
|
||||||
|
(when (yas/rails-root)
|
||||||
|
(setq (make-local-variable 'yas/mode-symbol) 'rails-mode)))
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
# key: t.
|
# key: t.
|
||||||
# contributor: Translated from TextMate Snippet
|
# contributor: Translated from TextMate Snippet
|
||||||
# name: t.rename (tre)
|
# name: t.rename (tre)
|
||||||
## condition: "meta.rails.migration.create_table, meta.rails.migration.change_table"
|
# condition: (and (yas/rails-migration-p) (yas/rails-in-create-table))
|
||||||
# --
|
# --
|
||||||
t.rename(:${1:old_column_name}, :${2:new_column_name})
|
t.rename(:${1:old_column_name}, :${2:new_column_name})
|
||||||
t.$0
|
t.$0
|
@ -2,6 +2,6 @@
|
|||||||
# key: mcol
|
# key: mcol
|
||||||
# contributor: Translated from TextMate Snippet
|
# contributor: Translated from TextMate Snippet
|
||||||
# name: Remove / Add Column
|
# name: Remove / Add Column
|
||||||
## condition: "meta.rails.migration - meta.rails.migration.create_table - meta.rails.migration.change_table"
|
# condition: (yas/rails-intelligent-migration-snippet-condition-p)
|
||||||
# --
|
# --
|
||||||
remove_column :${1:table}, :${2:column}${3: [press tab twice to generate add_column]}
|
(yas/rails-intelligent-migration-snippet :remove_add_column)
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
# key: t.
|
# key: t.
|
||||||
# contributor: Translated from TextMate Snippet
|
# contributor: Translated from TextMate Snippet
|
||||||
# name: t.binary (tcbi)
|
# name: t.binary (tcbi)
|
||||||
## condition: "meta.rails.migration.create_table, meta.rails.migration.change_table"
|
# condition: (and (yas/rails-migration-p) (yas/rails-in-create-table-p))
|
||||||
# --
|
# --
|
||||||
t.binary :${1:title}${2:, :limit => ${3:2}.megabytes}
|
t.binary :${1:title}${2:, :limit => ${3:2}.megabytes}
|
||||||
t.$0
|
t.$0
|
@ -2,7 +2,7 @@
|
|||||||
# key: t.
|
# key: t.
|
||||||
# contributor: Translated from TextMate Snippet
|
# contributor: Translated from TextMate Snippet
|
||||||
# name: t.boolean (tcb)
|
# name: t.boolean (tcb)
|
||||||
## condition: "meta.rails.migration.create_table, meta.rails.migration.change_table"
|
# condition: (and (yas/rails-migration-p) (yas/rails-in-create-table-p))
|
||||||
# --
|
# --
|
||||||
t.boolean :${1:title}
|
t.boolean :${1:title}
|
||||||
t.$0
|
t.$0
|
@ -2,7 +2,7 @@
|
|||||||
# key: t.
|
# key: t.
|
||||||
# contributor: Translated from TextMate Snippet
|
# contributor: Translated from TextMate Snippet
|
||||||
# name: t.date (tcda)
|
# name: t.date (tcda)
|
||||||
## condition: "meta.rails.migration.create_table, meta.rails.migration.change_table"
|
# condition: (and (yas/rails-migration-p) (yas/rails-in-create-table-p))
|
||||||
# --
|
# --
|
||||||
t.date :${1:title}
|
t.date :${1:title}
|
||||||
t.$0
|
t.$0
|
@ -2,7 +2,7 @@
|
|||||||
# key: t.
|
# key: t.
|
||||||
# contributor: Translated from TextMate Snippet
|
# contributor: Translated from TextMate Snippet
|
||||||
# name: t.datetime (tcdt)
|
# name: t.datetime (tcdt)
|
||||||
## condition: "meta.rails.migration.create_table, meta.rails.migration.change_table"
|
# condition: (and (yas/rails-migration-p) (yas/rails-in-create-table-p))
|
||||||
# --
|
# --
|
||||||
t.datetime :${1:title}
|
t.datetime :${1:title}
|
||||||
t.$0
|
t.$0
|
@ -2,7 +2,7 @@
|
|||||||
# key: t.
|
# key: t.
|
||||||
# contributor: Translated from TextMate Snippet
|
# contributor: Translated from TextMate Snippet
|
||||||
# name: t.decimal (tcd)
|
# name: t.decimal (tcd)
|
||||||
## condition: "meta.rails.migration.create_table, meta.rails.migration.change_table"
|
# condition: (and (yas/rails-migration-p) (yas/rails-in-create-table-p))
|
||||||
# --
|
# --
|
||||||
t.decimal :${1:title}${2:${3:, :precision => ${4:10}}${5:, :scale => ${6:2}}}
|
t.decimal :${1:title}${2:${3:, :precision => ${4:10}}${5:, :scale => ${6:2}}}
|
||||||
t.$0
|
t.$0
|
@ -2,7 +2,7 @@
|
|||||||
# key: t.
|
# key: t.
|
||||||
# contributor: Translated from TextMate Snippet
|
# contributor: Translated from TextMate Snippet
|
||||||
# name: t.float (tcf)
|
# name: t.float (tcf)
|
||||||
## condition: "meta.rails.migration.create_table, meta.rails.migration.change_table"
|
# condition: (and (yas/rails-migration-p) (yas/rails-in-create-table-p))
|
||||||
# --
|
# --
|
||||||
t.float :${1:title}
|
t.float :${1:title}
|
||||||
t.$0
|
t.$0
|
@ -2,7 +2,7 @@
|
|||||||
# key: t.
|
# key: t.
|
||||||
# contributor: Translated from TextMate Snippet
|
# contributor: Translated from TextMate Snippet
|
||||||
# name: t.integer (tci)
|
# name: t.integer (tci)
|
||||||
## condition: "meta.rails.migration.create_table, meta.rails.migration.change_table"
|
# condition: (and (yas/rails-migration-p) (yas/rails-in-create-table-p))
|
||||||
# --
|
# --
|
||||||
t.integer :${1:title}
|
t.integer :${1:title}
|
||||||
t.$0
|
t.$0
|
@ -2,7 +2,7 @@
|
|||||||
# key: t.
|
# key: t.
|
||||||
# contributor: Translated from TextMate Snippet
|
# contributor: Translated from TextMate Snippet
|
||||||
# name: t.lock_version (tcl)
|
# name: t.lock_version (tcl)
|
||||||
## condition: "meta.rails.migration.create_table, meta.rails.migration.change_table"
|
# condition: (and (yas/rails-migration-p) (yas/rails-in-create-table-p))
|
||||||
# --
|
# --
|
||||||
t.integer :lock_version, :null => false, :default => 0
|
t.integer :lock_version, :null => false, :default => 0
|
||||||
t.$0
|
t.$0
|
@ -2,7 +2,7 @@
|
|||||||
# key: t.
|
# key: t.
|
||||||
# contributor: Translated from TextMate Snippet
|
# contributor: Translated from TextMate Snippet
|
||||||
# name: t.references (tcr)
|
# name: t.references (tcr)
|
||||||
## condition: "meta.rails.migration.create_table, meta.rails.migration.change_table"
|
# condition: (and (yas/rails-migration-p) (yas/rails-in-create-table-p))
|
||||||
# --
|
# --
|
||||||
t.references :${1:taggable}${2:, :polymorphic => ${3:{ :default => '${4:Photo}' \}}}
|
t.references :${1:taggable}${2:, :polymorphic => ${3:{ :default => '${4:Photo}' \}}}
|
||||||
t.$0
|
t.$0
|
@ -2,7 +2,7 @@
|
|||||||
# key: t.
|
# key: t.
|
||||||
# contributor: Translated from TextMate Snippet
|
# contributor: Translated from TextMate Snippet
|
||||||
# name: t.string (tcs)
|
# name: t.string (tcs)
|
||||||
## condition: "meta.rails.migration.create_table, meta.rails.migration.change_table"
|
# condition: (and (yas/rails-migration-p) (yas/rails-in-create-table-p))
|
||||||
# --
|
# --
|
||||||
t.string :${1:title}
|
t.string :${1:title}
|
||||||
t.$0
|
t.$0
|
@ -2,7 +2,7 @@
|
|||||||
# key: t.
|
# key: t.
|
||||||
# contributor: Translated from TextMate Snippet
|
# contributor: Translated from TextMate Snippet
|
||||||
# name: t.text (tct)
|
# name: t.text (tct)
|
||||||
## condition: "meta.rails.migration.create_table, meta.rails.migration.change_table"
|
# condition: (and (yas/rails-migration-p) (yas/rails-in-create-table-p))
|
||||||
# --
|
# --
|
||||||
t.text :${1:title}
|
t.text :${1:title}
|
||||||
t.$0
|
t.$0
|
@ -2,7 +2,7 @@
|
|||||||
# key: t.
|
# key: t.
|
||||||
# contributor: Translated from TextMate Snippet
|
# contributor: Translated from TextMate Snippet
|
||||||
# name: t.time (tcti)
|
# name: t.time (tcti)
|
||||||
## condition: "meta.rails.migration.create_table, meta.rails.migration.change_table"
|
# condition: (and (yas/rails-migration-p) (yas/rails-in-create-table-p))
|
||||||
# --
|
# --
|
||||||
t.time :${1:title}
|
t.time :${1:title}
|
||||||
t.$0
|
t.$0
|
@ -2,7 +2,7 @@
|
|||||||
# key: t.
|
# key: t.
|
||||||
# contributor: Translated from TextMate Snippet
|
# contributor: Translated from TextMate Snippet
|
||||||
# name: t.timestamp (tcts)
|
# name: t.timestamp (tcts)
|
||||||
## condition: "meta.rails.migration.create_table, meta.rails.migration.change_table"
|
# condition: (and (yas/rails-migration-p) (yas/rails-in-create-table-p))
|
||||||
# --
|
# --
|
||||||
t.timestamp :${1:title}
|
t.timestamp :${1:title}
|
||||||
t.$0
|
t.$0
|
@ -2,7 +2,7 @@
|
|||||||
# key: t.
|
# key: t.
|
||||||
# contributor: Translated from TextMate Snippet
|
# contributor: Translated from TextMate Snippet
|
||||||
# name: t.timestamps (tctss)
|
# name: t.timestamps (tctss)
|
||||||
## condition: "meta.rails.migration.create_table, meta.rails.migration.change_table"
|
# condition: (and (yas/rails-migration-p) (yas/rails-in-create-table-p))
|
||||||
# --
|
# --
|
||||||
t.timestamps
|
t.timestamps
|
||||||
t.$0
|
t.$0
|
@ -3,5 +3,6 @@
|
|||||||
# key: mind
|
# key: mind
|
||||||
# contributor: Translated from TextMate Snippet
|
# contributor: Translated from TextMate Snippet
|
||||||
# name: Add / Remove Index
|
# name: Add / Remove Index
|
||||||
## condition: "meta.rails.migration - meta.rails.migration.create_table - meta.rails.migration.change_table"
|
# condition: (yas/rails-intelligent-migration-snippet-condition-p)
|
||||||
# --
|
# --
|
||||||
|
(yas/rails-intelligent-migration-snippet :add_remove_index)
|
@ -3,5 +3,6 @@
|
|||||||
# key: mind
|
# key: mind
|
||||||
# contributor: Translated from TextMate Snippet
|
# contributor: Translated from TextMate Snippet
|
||||||
# name: Add / Remove Named Index
|
# name: Add / Remove Named Index
|
||||||
## condition: "meta.rails.migration - meta.rails.migration.create_table - meta.rails.migration.change_table"
|
# condition: (yas/rails-intelligent-migration-snippet-condition-p)
|
||||||
# --
|
# --
|
||||||
|
(yas/rails-intelligent-migration-snippet :add_remove_named_index)
|
||||||
|
@ -3,5 +3,6 @@
|
|||||||
# key: mind
|
# key: mind
|
||||||
# contributor: Translated from TextMate Snippet
|
# contributor: Translated from TextMate Snippet
|
||||||
# name: Add / Remove Unique Index
|
# name: Add / Remove Unique Index
|
||||||
## condition: "meta.rails.migration - meta.rails.migration.create_table - meta.rails.migration.change_table"
|
# condition: (yas/rails-intelligent-migration-snippet-condition-p)
|
||||||
# --
|
# --
|
||||||
|
(yas/rails-intelligent-migration-snippet :add_remove_unique_index)
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
# key: mcol
|
# key: mcol
|
||||||
# contributor: Translated from TextMate Snippet
|
# contributor: Translated from TextMate Snippet
|
||||||
# name: Create Column in Table
|
# name: Create Column in Table
|
||||||
## condition: "meta.rails.migration.create_table"
|
# condition: (yas/rails-intelligent-migration-snippet-condition-p)
|
||||||
# --
|
# --
|
||||||
t.column ${1:title}, :${2:string}
|
t.column ${1:title}, :${2:string}
|
||||||
$0
|
$0
|
@ -2,6 +2,6 @@
|
|||||||
# key: mtab
|
# key: mtab
|
||||||
# contributor: Translated from TextMate Snippet
|
# contributor: Translated from TextMate Snippet
|
||||||
# name: Drop / Create Table
|
# name: Drop / Create Table
|
||||||
## condition: "meta.rails.migration - meta.rails.migration.create_table - meta.rails.migration.change_table"
|
# condition: (yas/rails-intelligent-migration-snippet-condition-p)
|
||||||
# --
|
# --
|
||||||
drop_table :${1:table}${2: [press tab twice to generate create_table]}
|
drop_table :${1:table}${2: [press tab twice to generate create_table]}
|
Loading…
x
Reference in New Issue
Block a user