···139139 |> Lwd.map2 (Lwd.get Vars.ui_state.revset) ~f:(fun revset _ ->
140140 try
141141 let max_commits = (Vars.config |> Lwd.peek).max_commits in
142142- let nodes, rev_ids = get_graph_nodes ?revset max_commits in
142142+ let nodes, rev_ids, native_rows =
143143+ get_graph_nodes_with_native_rows ?revset max_commits
144144+ in
143145 let state =
144146 Render_jj_graph.{ depth = 0; columns = [||]; pending_joins = [] }
145147 in
···181183 else rev_ids
182184 in
183185 let rendered_rows =
184184- Render_jj_graph.render_nodes_structured
185185- state
186186- nodes
187187- ~node_attr:Commit_render.graph_node_attr
186186+ if Vars.get_rebase_preview_active ()
187187+ then
188188+ Render_jj_graph.render_nodes_structured
189189+ state
190190+ nodes
191191+ ~node_attr:Commit_render.graph_node_attr
192192+ else (
193193+ match native_rows with
194194+ | Some rows ->
195195+ rows
196196+ | None ->
197197+ [%log
198198+ warn "Failed to align native jj graph rows; using synthetic renderer"];
199199+ Render_jj_graph.render_nodes_structured
200200+ state
201201+ nodes
202202+ ~node_attr:Commit_render.graph_node_attr)
188203 in
189204 error_var $= None;
190205 rendered_rows, rev_ids
+2-3
jj_tui/lib/commit_render.ml
···5959 let line1_parts = ref [] in
6060 (* Render change_id with prefix highlighting *)
6161 let change_id_prefix_attr, change_id_rest_attr =
6262- if node.hidden
6262+ if node.hidden || node.conflict
6363 then
6464- let duplicate_attr = fg white ++ st bold in
6565- duplicate_attr, duplicate_attr
6464+ fg white ++ st bold, fg lightblack ++ bs
6665 else if node.divergent
6766 then fg red ++ st bold, fg red ++ bs
6867 else fg magenta ++ st bold, fg lightblack ++ bs