Skip to content

Commit ab78036

Browse files
committed
Add rudimentry tracking to not return data before the line changed
1 parent 3eab38d commit ab78036

File tree

4 files changed

+10
-6
lines changed

4 files changed

+10
-6
lines changed

lua/commonmarker/init.lua

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,8 @@ end
3737

3838
local function highlight (buffer, namespace, firstline)
3939
local contents = get_contents(buffer)
40-
local events = rust.get_offsets(contents)
40+
local firstbyte = call_function("line2byte", { firstline })
41+
local events = rust.get_offsets(contents, firstbyte)
4142
for _, event in ipairs(events) do
4243
repeat -- Allow continue in for loop
4344
local sline, scol = byte2pos(event.first)

src/lib.rs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,14 +27,17 @@ struct MdTag {
2727

2828
type Events = Vec<MdTag>;
2929

30-
fn get_offsets(buffer: String) -> Result<Events> {
30+
fn get_offsets(buffer: String, firstbyte: usize) -> Result<Events> {
3131
let options = Options::all();
3232
let parser = Parser::new_ext(buffer.as_str(), options);
3333
let mut events = Events::new();
3434
for (event, range) in parser.into_offset_iter() {
3535
let first = range.start + 1;
3636
let last = range.end + 1;
3737
let mut lang = None;
38+
if first < firstbyte {
39+
continue;
40+
}
3841
let group = match event {
3942
Event::Start(tag) => match tag {
4043
Tag::Heading(level) => Some(format!("cmarkHeading{}", level)),

src/lua.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,9 @@ fn to_html(_: &Lua, buffer: String) -> LuaResult<String> {
55
Ok(super::to_html(buffer).unwrap())
66
}
77

8-
fn get_offsets(lua: &Lua, buffer: String) -> LuaResult<LuaTable> {
8+
fn get_offsets(lua: &Lua, (buffer, firstbyte): (String, usize)) -> LuaResult<LuaTable> {
99
let table = lua.create_table().unwrap();
10-
let events = super::get_offsets(buffer).unwrap();
10+
let events = super::get_offsets(buffer, firstbyte).unwrap();
1111
for (i, event) in events.iter().enumerate() {
1212
let info = lua.create_table().unwrap();
1313
info.set("group", event.group.as_str()).unwrap();

src/python.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,8 @@ fn to_html(_py: Python, buffer: String) -> PyResult<String> {
88
}
99

1010
#[pyfunction]
11-
fn get_offsets(_py: Python, buffer: String) -> PyResult<&PyDict> {
12-
let events = super::get_offsets(buffer).unwrap();
11+
fn get_offsets(_py: Python, buffer: String, firstbyte: usize) -> PyResult<&PyDict> {
12+
let events = super::get_offsets(buffer, firstbyte).unwrap();
1313
let pyevents = PyDict::new(_py);
1414
let mut i: u32 = 1;
1515
for event in events.iter() {

0 commit comments

Comments
 (0)