diff --git a/src/elements/list.rs b/src/elements/list.rs
index 17781c6..b24d8a5 100644
--- a/src/elements/list.rs
+++ b/src/elements/list.rs
@@ -340,6 +340,20 @@ impl Rule for ListRule {
 					}
 				}
 
+				if let Some(hints) =
+					Hints::from_source(cursor.source.clone(), &state.shared.lsp)
+				{
+					let mut label = String::new();
+					for (_, id) in &depth
+					{
+						if !label.is_empty() {
+							label.push('.');
+						}
+						label.push_str(id.to_string().as_str());
+					}
+					hints.add(captures.get(1).unwrap().end(), label);
+				}
+
 				// Content
 				let entry_start = captures.get(3).unwrap().start();
 				let mut entry_content = captures.get(3).unwrap().as_str().to_string();
@@ -396,20 +410,6 @@ impl Rule for ListRule {
 					ListRule::push_markers(&token, state, document, &vec![], &depth);
 				}
 
-				if let Some(hints) =
-					Hints::from_source(token.source(), &state.shared.lsp)
-				{
-					let mut label = String::new();
-					for (_, id) in &depth
-					{
-						if !label.is_empty() {
-							label.push('.');
-						}
-						label.push_str(id.to_string().as_str());
-					}
-					hints.add(captures.get(1).unwrap().end(), label);
-				}
-
 				state.push(
 					document,
 					Box::new(ListEntry {
diff --git a/src/elements/section.rs b/src/elements/section.rs
index 1c4fee9..6c3ad02 100644
--- a/src/elements/section.rs
+++ b/src/elements/section.rs
@@ -590,7 +590,7 @@ nml.section.push("6", 6, "", "refname")
 		section_name { delta_line == 0, delta_start == 1 };
 
 		section_heading { delta_line == 1, delta_start == 0, length == 2 };
-		section_reference { delta_line == 0, delta_start == 2, length == 3 };
+		section_reference { delta_line == 0, delta_start == 2, length == 4 };
 		section_kind { delta_line == 0, delta_start == 4, length == 1 };
 		section_name { delta_line == 0, delta_start == 1 };
 
diff --git a/src/lsp/definition.rs b/src/lsp/definition.rs
index 5e2a871..6dd961b 100644
--- a/src/lsp/definition.rs
+++ b/src/lsp/definition.rs
@@ -1,3 +1,4 @@
+use std::borrow::BorrowMut;
 use std::cell::RefCell;
 use std::rc::Rc;
 
@@ -53,9 +54,9 @@ fn from_source_impl(
 		return from_source_impl(location.source(), target, lsp, original);
 	} else if let Ok(sourcefile) = source.downcast_rc::<SourceFile>() {
 		let borrow = lsp.as_ref().unwrap().borrow();
-		let definitions = borrow.definitions.get(&original.source()).unwrap();
-		let mut db = definitions.definitions.borrow_mut();
+		if let Some(def_data) = borrow.definitions.get(&original.source())
 		{
+			let mut db = def_data.definitions.borrow_mut();
 			let token = original.source().original_range(original.range).1;
 
 			// Resolve target