middleman / middleman-syntax

Code syntax highlighting plugin via Rouge for Middleman

Home Page:https://middlemanapp.com

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Lexer options don't get passed to lexer

alexanderweiss opened this issue ยท comments

Lexer options, defined in config.rb don't seem to get passed to passed to the lexer:

activate :syntax, lexer_options: { prompt: '$,#,;' }

The above doesn't actually override the default settings of the console lexer.

I've been trying to figure out what was going on and it seems like the lexer_options need to be passed as the third argument to find_fancy, rather than to lexer.lex (in https://github.com/middleman/middleman-syntax/blob/master/lib/middleman-syntax/highlighter.rb):

def self.highlight(code, language=nil, opts={})
  highlighter_options = options.to_h.merge(opts)
  formatter = Middleman::Syntax::Formatters::HTML.new(highlighter_options)
  lexer_options = highlighter_options.delete(:lexer_options)
  
  lexer = Rouge::Lexer.find_fancy(language, code, lexer_options) || Rouge::Lexers::PlainText
  
  highlighter_options[:css_class] = [ highlighter_options[:css_class], lexer.tag ].join(' ')
  
  formatter.format(lexer.lex(code, lexer_options))
end

Hey @alexanderweiss ๐Ÿ‘‹๐Ÿผ

Would you like to send a patch? Better late than never ๐Ÿ’ช๐Ÿผ.

I think it makes sense what you mentioned in the comment above โ˜๐Ÿผ.

Hello @alexanderweiss ๐Ÿ‘‹๐Ÿผ

Sorry for the ping! Just wanted to ask if you can help us to fix this one ๐Ÿ™๐Ÿผ If you can send a patch, that would be amazing, otherwise if you can point me to the right docs I'll try to submit a patch (and a test) by myself. Would like to better understand what this lexer_options: { prompt: '$,#,;' } is supposed to do, I've never used raw Rouge and I'm not familiar with some concepts as the lexer.

โ„น๏ธ I started some months ago to collaborate in the Middleman ecosystem, so I'm trying to catch up with old issues/PRs.