rouge-ruby/rouge · error · RuntimeError

no keyword set #{name.inspect} defined - try defining one!

Error message

no keyword set #{name.inspect} defined - try defining one!

What it means

Error "no keyword set #{name.inspect} defined - try defining one!" thrown in rouge-ruby/rouge.

Source

Thrown at lib/rouge/regex_lexer.rb:405

      states[name.to_sym] ||= begin
        defn = state_definitions[name.to_sym] or raise "unknown state: #{name.inspect}"
        defn.to_state(self)
      end
    end

    def self.dangerous_alternation_regexp(list)
      # rubocop:disable Rouge/NoBuildingAlternationPatternInRegexp
      /#{Regexp.union(list)}\b/
      # rubocop:enable Rouge/NoBuildingAlternationPatternInRegexp
    end

    def self.get_keyword_set(name)
      @keyword_sets ||= {}

      @keyword_sets[name] ||= begin
        # don't recurse past the base class
        if self == RegexLexer
          raise "no keyword set #{name.inspect} defined - try defining one!"
        end

        # Use memory sharing when applicable. If the method is not overridden,
        # it is best to use the superclass method so the cache is shared.
        set = if singleton_class.method_defined?(name, false)
          public_send(name)
        else
          superclass.get_keyword_set(name)
        end

        raise InvalidKeywordSet.new(self) unless set.is_a?(Set)

        set
      end
    end

    def inspect_details
      yield ' stack:['

View on GitHub (pinned to bd7dad7b09)

When it happens

Trigger: Thrown at lib/rouge/regex_lexer.rb:405 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of rouge-ruby/rouge@bd7dad7b09 (2026-08-23). Data as JSON: /api/errors/44b795cf252cb027. Report an issue: GitHub.