Highlight a AST element.

Property definitions

nitc $ AbstractHighlightVisitor :: highlight_node
	# Highlight a AST element.
	fun highlight_node(n: ANode)
	do
		n.parentize_tokens

		var f
		var l

		if n isa Token then
			f = n
			l = n
		else
			assert n isa Prod
			f = n.first_token
			if f == null then return
			l = n.last_token
			if l == null then return
		end

		if include_loose_tokens then
			if f.prev_looses.not_empty then f = f.prev_looses.first
			if l.next_looses.not_empty then l = l.next_looses.last
		end

		var line = first_line
		if line != null then
			while f.location.line_start < line do
				f = f.next_token
				if f == null then return
			end
		end

		line = last_line
		if line != null then
			while l.location.line_end > line do
				l = l.prev_token
				if l == null then return
			end
		end

		if include_whole_lines then
			f = f.first_real_token_in_line
			l = l.last_real_token_in_line
		end

		do_highlight(f, l)
	end
src/highlight.nit:54,2--100,4