@Dmitry made a great point that
hippie-expand will do what I'm desiring when
: is considered a punctuation character.
It's obviously not ideal to just set
(modify-syntax-entry ?: "." ruby-mode-syntax-table) in your init and call it a day, because then only
:some_action is considered a symbol which would break expectations for other plugins. This seems ripe for re-defining with advice though.
Here's what I came up with:
(defun hippie-expand-ruby-symbols (orig-fun &rest args)
(if (eq major-mode 'ruby-mode)
(let ((table (make-syntax-table ruby-mode-syntax-table)))
(modify-syntax-entry ?: "." table)
(with-syntax-table table (apply orig-fun args)))
(apply orig-fun args)))
(advice-add 'hippie-expand :around #'hippie-expand-ruby-symbols)
hippie-expand is called when the major-mode is
ruby-mode, define a cloned temporary syntax table where
: is a punctuation character and call
hippie-expand with it. Otherwise, just call
hippie-expand as normal.
Any downside to this approach?