diff --git a/modules/siren-enh-ruby.el b/modules/siren-enh-ruby.el new file mode 100644 index 0000000..598c9df --- /dev/null +++ b/modules/siren-enh-ruby.el @@ -0,0 +1,73 @@ +;; +;; ruby +;; + +(require 'siren-programming) + +(siren-require-packages '(enh-ruby-mode ruby-tools inf-ruby yari)) + +;; Rake files are ruby, too, as are gemspecs, rackup files, and gemfiles. +(add-to-list 'auto-mode-alist '("\\.rb\\'" . enh-ruby-mode)) +(add-to-list 'auto-mode-alist '("\\.rake\\'" . enh-ruby-mode)) +(add-to-list 'auto-mode-alist '("Rakefile\\'" . enh-ruby-mode)) +(add-to-list 'auto-mode-alist '("\\.gemspec\\'" . enh-ruby-mode)) +(add-to-list 'auto-mode-alist '("\\.ru\\'" . enh-ruby-mode)) +(add-to-list 'auto-mode-alist '("Gemfile\\'" . enh-ruby-mode)) +(add-to-list 'auto-mode-alist '("Guardfile\\'" . enh-ruby-mode)) +(add-to-list 'auto-mode-alist '("Capfile\\'" . enh-ruby-mode)) +(add-to-list 'auto-mode-alist '("\\.cap\\'" . enh-ruby-mode)) +(add-to-list 'auto-mode-alist '("\\.thor\\'" . enh-ruby-mode)) +(add-to-list 'auto-mode-alist '("\\.rabl\\'" . enh-ruby-mode)) +(add-to-list 'auto-mode-alist '("Thorfile\\'" . enh-ruby-mode)) +(add-to-list 'auto-mode-alist '("Vagrantfile\\'" . enh-ruby-mode)) +(add-to-list 'auto-mode-alist '("\\.jbuilder\\'" . enh-ruby-mode)) +(add-to-list 'auto-mode-alist '("Podfile\\'" . enh-ruby-mode)) +(add-to-list 'auto-mode-alist '("\\.podspec\\'" . enh-ruby-mode)) +(add-to-list 'auto-mode-alist '("Puppetfile\\'" . enh-ruby-mode)) +(add-to-list 'auto-mode-alist '("Berksfile\\'" . enh-ruby-mode)) +(add-to-list 'auto-mode-alist '("Appraisals\\'" . enh-ruby-mode)) + +;; We never want to edit Rubinius bytecode +(add-to-list 'completion-ignored-extensions ".rbc") + +(define-key 'help-command (kbd "R") 'yari) + +;; Set up hs-mode (HideShow) for Ruby +(add-to-list 'hs-special-modes-alist + `(ruby-mode + ,(rx (or "def" "class" "module" "do")) ;; Block start + ,(rx (or "end")) ;; Block end + ,(rx (or "#" "=begin")) ;; Comment start + ruby-forward-sexp nil)) + +;; I don't like having operators colored. +(custom-set-faces '(enh-ruby-op-face ((t nil)))) + +(eval-after-load 'enh-ruby-mode + '(progn + (defun siren-ruby-mode-defaults () + (siren-prog-mode-defaults) + (ruby-tools-mode +1) + (setq tab-width 2) + (hs-minor-mode 1) + (company-mode +1) + (subword-mode +1) + (setq highlight-indentation-offset 2) + (highlight-indentation-mode) + (highlight-indentation-current-column-mode) + (setq enh-ruby-check-syntax nil) + (setq enh-ruby-deep-indent-paren nil) + (setq enh-ruby-bounce-deep-indent t) + (setq ruby-deep-arglist nil) + (setq c-tab-always-indent nil) + (setq ruby-use-encoding-map nil) + (define-key enh-ruby-mode-map (kbd "C-c C-h") 'toggle-hiding) + (define-key enh-ruby-mode-map (kbd "C-c C-l") 'goto-line)) + + (setq siren-ruby-mode-hook 'siren-ruby-mode-defaults) + + (add-hook 'enh-ruby-mode-hook (lambda () + (run-hooks 'siren-ruby-mode-hook))))) + + +(provide 'siren-enh-ruby) diff --git a/siren-modules.el b/siren-modules.el index 00cb062..1ca4dc7 100644 --- a/siren-modules.el +++ b/siren-modules.el @@ -50,7 +50,7 @@ (require 'siren-go) (require 'siren-makefile) (require 'siren-markdown) -(require 'siren-ruby) +(require 'siren-enh-ruby) (require 'siren-sass) (require 'siren-scss) (require 'siren-sh) diff --git a/snippets/enh-ruby-mode/.yas-make-groups b/snippets/enh-ruby-mode/.yas-make-groups new file mode 100644 index 0000000..e69de29 diff --git a/snippets/enh-ruby-mode/.yas-parents b/snippets/enh-ruby-mode/.yas-parents new file mode 100644 index 0000000..eed5b44 --- /dev/null +++ b/snippets/enh-ruby-mode/.yas-parents @@ -0,0 +1 @@ +text-mode diff --git a/snippets/enh-ruby-mode/collections/each b/snippets/enh-ruby-mode/collections/each new file mode 100644 index 0000000..95e52c9 --- /dev/null +++ b/snippets/enh-ruby-mode/collections/each @@ -0,0 +1,4 @@ +# name: each { |...| ... } +# key: each +# -- +each { |${e}| $0 } \ No newline at end of file diff --git a/snippets/enh-ruby-mode/collections/eachwi b/snippets/enh-ruby-mode/collections/eachwi new file mode 100644 index 0000000..ddf867e --- /dev/null +++ b/snippets/enh-ruby-mode/collections/eachwi @@ -0,0 +1,4 @@ +# name: each_with_index { |e, i| ... } +# key: eachwi +# -- +each_with_index { |${e}, ${i}| $0 } \ No newline at end of file diff --git a/snippets/enh-ruby-mode/collections/map b/snippets/enh-ruby-mode/collections/map new file mode 100644 index 0000000..116674b --- /dev/null +++ b/snippets/enh-ruby-mode/collections/map @@ -0,0 +1,4 @@ +# name: map { |...| ... } +# key: map +# -- +map { |${e}| $0 } \ No newline at end of file diff --git a/snippets/enh-ruby-mode/collections/mapwi b/snippets/enh-ruby-mode/collections/mapwi new file mode 100644 index 0000000..609719d --- /dev/null +++ b/snippets/enh-ruby-mode/collections/mapwi @@ -0,0 +1,4 @@ +# name: map_with_index { |...| ... } +# key: mapwi +# -- +map_with_index { |${e}| $0 } \ No newline at end of file diff --git a/snippets/enh-ruby-mode/control structure/case b/snippets/enh-ruby-mode/control structure/case new file mode 100644 index 0000000..f7ecb21 --- /dev/null +++ b/snippets/enh-ruby-mode/control structure/case @@ -0,0 +1,7 @@ +# name: case ... end +# key: case +# -- +case ${1:object} +when ${2:condition} + $0 +end \ No newline at end of file diff --git a/snippets/enh-ruby-mode/control structure/else b/snippets/enh-ruby-mode/control structure/else new file mode 100644 index 0000000..8648ea8 --- /dev/null +++ b/snippets/enh-ruby-mode/control structure/else @@ -0,0 +1,5 @@ +# name: else +# key: else +# -- +else + $0 \ No newline at end of file diff --git a/snippets/enh-ruby-mode/control structure/elsif b/snippets/enh-ruby-mode/control structure/elsif new file mode 100644 index 0000000..bec9ce8 --- /dev/null +++ b/snippets/enh-ruby-mode/control structure/elsif @@ -0,0 +1,5 @@ +# name: elsif +# key: elsif +# -- +elsif ${1:condition} + $0 \ No newline at end of file diff --git a/snippets/enh-ruby-mode/control structure/for b/snippets/enh-ruby-mode/control structure/for new file mode 100644 index 0000000..ef8d428 --- /dev/null +++ b/snippets/enh-ruby-mode/control structure/for @@ -0,0 +1,6 @@ +# name: for ... end +# key: for +# -- +for ${1:i} in ${2:length} + $0 +end \ No newline at end of file diff --git a/snippets/enh-ruby-mode/control structure/unless b/snippets/enh-ruby-mode/control structure/unless new file mode 100644 index 0000000..ce4054e --- /dev/null +++ b/snippets/enh-ruby-mode/control structure/unless @@ -0,0 +1,6 @@ +# name: unless ... end +# key: unless +# -- +unless ${1:condition} + $0 +end \ No newline at end of file diff --git a/snippets/enh-ruby-mode/control structure/when b/snippets/enh-ruby-mode/control structure/when new file mode 100644 index 0000000..eb17a33 --- /dev/null +++ b/snippets/enh-ruby-mode/control structure/when @@ -0,0 +1,5 @@ +# name: when ... end +# key: when +# -- +when ${condition} + $0 \ No newline at end of file diff --git a/snippets/enh-ruby-mode/definitions/Enum b/snippets/enh-ruby-mode/definitions/Enum new file mode 100644 index 0000000..b9ccdcc --- /dev/null +++ b/snippets/enh-ruby-mode/definitions/Enum @@ -0,0 +1,8 @@ +# name: include Enumerable; def each ... end +# key: Enum +# -- +include Enumerable + +def each(&block) + $0 +end \ No newline at end of file diff --git a/snippets/enh-ruby-mode/definitions/cla b/snippets/enh-ruby-mode/definitions/cla new file mode 100644 index 0000000..30186c5 --- /dev/null +++ b/snippets/enh-ruby-mode/definitions/cla @@ -0,0 +1,13 @@ +# name: class ... end +# contributor: hitesh +# key: cla +# -- +class ${1:`(let ((fn (capitalize (file-name-nondirectory + (file-name-sans-extension + (or (buffer-file-name) + (buffer-name (current-buffer)))))))) + (cond + ((string-match "_" fn) (replace-match "" nil nil fn)) + (t fn)))`} + $0 +end \ No newline at end of file diff --git a/snippets/enh-ruby-mode/definitions/clas b/snippets/enh-ruby-mode/definitions/clas new file mode 100644 index 0000000..5a8e606 --- /dev/null +++ b/snippets/enh-ruby-mode/definitions/clas @@ -0,0 +1,6 @@ +# name: class << self ... end +# key: clas +# -- +class << ${self} + $0 +end \ No newline at end of file diff --git a/snippets/enh-ruby-mode/definitions/def b/snippets/enh-ruby-mode/definitions/def new file mode 100644 index 0000000..530b7fd --- /dev/null +++ b/snippets/enh-ruby-mode/definitions/def @@ -0,0 +1,6 @@ +# name: def ... end +# key: def +# -- +def ${1:method_name} + $0 +end \ No newline at end of file diff --git a/snippets/enh-ruby-mode/definitions/defs b/snippets/enh-ruby-mode/definitions/defs new file mode 100644 index 0000000..9b00031 --- /dev/null +++ b/snippets/enh-ruby-mode/definitions/defs @@ -0,0 +1,6 @@ +# name: def self. ... end +# key: defs +# -- +def self.${1:method_name} + $0 +end \ No newline at end of file diff --git a/snippets/enh-ruby-mode/definitions/do b/snippets/enh-ruby-mode/definitions/do new file mode 100644 index 0000000..9a53469 --- /dev/null +++ b/snippets/enh-ruby-mode/definitions/do @@ -0,0 +1,6 @@ +# name: do |variable| ... end +# key: do +# -- +do $1 + $0 +end \ No newline at end of file diff --git a/snippets/enh-ruby-mode/definitions/mod b/snippets/enh-ruby-mode/definitions/mod new file mode 100644 index 0000000..118400c --- /dev/null +++ b/snippets/enh-ruby-mode/definitions/mod @@ -0,0 +1,13 @@ +# name: module ... end +# contributor: hitesh , jimeh +# key: mod +# -- +module ${1:`(let ((fn (capitalize (file-name-nondirectory + (file-name-sans-extension + (or (buffer-file-name) + (buffer-name (current-buffer)))))))) + (cond + ((string-match "_" fn) (replace-match "" nil nil fn)) + (t fn)))`} + $0 +end \ No newline at end of file diff --git a/snippets/enh-ruby-mode/echo/bug b/snippets/enh-ruby-mode/echo/bug new file mode 100644 index 0000000..30c5acd --- /dev/null +++ b/snippets/enh-ruby-mode/echo/bug @@ -0,0 +1,5 @@ +# name: ruby debugger +# key: bug +# -- +require 'ruby-debug' +debugger$0 \ No newline at end of file diff --git a/snippets/enh-ruby-mode/echo/pd b/snippets/enh-ruby-mode/echo/pd new file mode 100644 index 0000000..f8e4c5f --- /dev/null +++ b/snippets/enh-ruby-mode/echo/pd @@ -0,0 +1,4 @@ +# name: puts debug +# key: pd +# -- +puts "\n>>>>>> ${1:name}: ${2:#{${3:variable}${4:.inspect}}}\n"$0 \ No newline at end of file diff --git a/snippets/enh-ruby-mode/echo/pp b/snippets/enh-ruby-mode/echo/pp new file mode 100644 index 0000000..ec1ffcd --- /dev/null +++ b/snippets/enh-ruby-mode/echo/pp @@ -0,0 +1,5 @@ +# name: pp ... +# key: pp +# -- +require 'pp' +pp $0 \ No newline at end of file diff --git a/snippets/enh-ruby-mode/echo/ppd b/snippets/enh-ruby-mode/echo/ppd new file mode 100644 index 0000000..c1f129d --- /dev/null +++ b/snippets/enh-ruby-mode/echo/ppd @@ -0,0 +1,4 @@ +# name: puts ...; pp ... +# key: ppd +# -- +puts "\n>>>>>> ${1:name}:"; pp $0 \ No newline at end of file diff --git a/snippets/enh-ruby-mode/echo/spd b/snippets/enh-ruby-mode/echo/spd new file mode 100644 index 0000000..1bea90f --- /dev/null +++ b/snippets/enh-ruby-mode/echo/spd @@ -0,0 +1,4 @@ +# name: STDOUT.puts debug +# key: spd +# -- +STDOUT.puts "\n>>>>>> ${1:name}: ${2:#{${3:variable}${4:.inspect}}}\n"$0 \ No newline at end of file diff --git a/snippets/enh-ruby-mode/general/Given b/snippets/enh-ruby-mode/general/Given new file mode 100644 index 0000000..9b640d4 --- /dev/null +++ b/snippets/enh-ruby-mode/general/Given @@ -0,0 +1,4 @@ +# name: Given(...) +# key: Given +# -- +Given(/^${1:match}$/)$0 \ No newline at end of file diff --git a/snippets/enh-ruby-mode/general/Then b/snippets/enh-ruby-mode/general/Then new file mode 100644 index 0000000..39e3362 --- /dev/null +++ b/snippets/enh-ruby-mode/general/Then @@ -0,0 +1,4 @@ +# name: Then(...) +# key: Then +# -- +Then(/^${1:match}$/)$0 \ No newline at end of file diff --git a/snippets/enh-ruby-mode/general/When b/snippets/enh-ruby-mode/general/When new file mode 100644 index 0000000..57fe753 --- /dev/null +++ b/snippets/enh-ruby-mode/general/When @@ -0,0 +1,4 @@ +# name: When(...) +# key: When +# -- +When(/^${1:match}$/)$0 \ No newline at end of file diff --git a/snippets/enh-ruby-mode/general/con b/snippets/enh-ruby-mode/general/con new file mode 100644 index 0000000..1c7283c --- /dev/null +++ b/snippets/enh-ruby-mode/general/con @@ -0,0 +1,4 @@ +# name: context '...' +# key: con +# -- +context "$1"$0 \ No newline at end of file diff --git a/snippets/enh-ruby-mode/general/des b/snippets/enh-ruby-mode/general/des new file mode 100644 index 0000000..328a6c7 --- /dev/null +++ b/snippets/enh-ruby-mode/general/des @@ -0,0 +1,4 @@ +# name: describe '...' +# key: des +# -- +describe "$1"$0 \ No newline at end of file diff --git a/snippets/enh-ruby-mode/general/eb b/snippets/enh-ruby-mode/general/eb new file mode 100644 index 0000000..e24412a --- /dev/null +++ b/snippets/enh-ruby-mode/general/eb @@ -0,0 +1,4 @@ +# name: expect(...).to be ... +# key: eb +# -- +expect($1).to be $0 diff --git a/snippets/enh-ruby-mode/general/ee b/snippets/enh-ruby-mode/general/ee new file mode 100644 index 0000000..b5d8e7b --- /dev/null +++ b/snippets/enh-ruby-mode/general/ee @@ -0,0 +1,4 @@ +# name: expect(...).to eq(...) +# key: ee +# -- +expect($1).to eq($0) \ No newline at end of file diff --git a/snippets/enh-ruby-mode/general/ex b/snippets/enh-ruby-mode/general/ex new file mode 100644 index 0000000..3fae6bf --- /dev/null +++ b/snippets/enh-ruby-mode/general/ex @@ -0,0 +1,4 @@ +# name: expect(...).to ... +# key: ex +# -- +expect($1).to $0 \ No newline at end of file diff --git a/snippets/enh-ruby-mode/general/re b/snippets/enh-ruby-mode/general/re new file mode 100644 index 0000000..babd230 --- /dev/null +++ b/snippets/enh-ruby-mode/general/re @@ -0,0 +1,4 @@ +# name: require '...' +# key: re +# -- +require '$1'$0 \ No newline at end of file diff --git a/snippets/enh-ruby-mode/general/req b/snippets/enh-ruby-mode/general/req new file mode 100644 index 0000000..93f2f46 --- /dev/null +++ b/snippets/enh-ruby-mode/general/req @@ -0,0 +1,4 @@ +# name: require '...' +# key: req +# -- +require '$1'$0 \ No newline at end of file diff --git a/snippets/enh-ruby-mode/misc/atr b/snippets/enh-ruby-mode/misc/atr new file mode 100644 index 0000000..9384079 --- /dev/null +++ b/snippets/enh-ruby-mode/misc/atr @@ -0,0 +1,7 @@ +# name: attributes(:name => :name, :market_name => "") +# key: atr +# -- +attributes( + :name => :${1:name}, + :market_name => "$0" +) \ No newline at end of file