X-Git-Url: http://nitlanguage.org diff --git a/src/highlight.nit b/src/highlight.nit index 7bce52d..59e5370 100644 --- a/src/highlight.nit +++ b/src/highlight.nit @@ -48,6 +48,25 @@ class HighlightVisitor html.add_class("nitcode") end + # When highlighting a node, also consider the loose tokens around it. + # + # Loose tokens are tokens discarded from the AST but attached before + # or after some non-loose tokens. See `Token::is_loose`. + # + # When this flag is set to `true`, the loose tokens that are before the + # first token and after the last token are also highlighted. + # + # Default: false. + var include_loose_tokens = false is writable + + # When highlighting a node, the first and the last lines are fully included. + # + # If the highlighted node starts (or ends) in the middle of a line, + # this flags forces the whole line to be highlighted. + # + # Default: false + var include_whole_lines = false is writable + # The entry-point of the highlighting. # Will fill `html` with the generated HTML content. fun enter_visit(n: ANode) @@ -68,6 +87,16 @@ class HighlightVisitor 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 + + if include_whole_lines then + f = f.first_real_token_in_line + l = l.last_real_token_in_line + end + htmlize(f, l) end @@ -957,7 +986,7 @@ redef class TComment redef fun make_tag(v) do var res = super - if not parent isa ADoc then + if is_loose then res.add_class("nc_c") end return res