mirror of
https://github.com/Kitware/CMake.git
synced 2026-06-24 08:47:59 +00:00
Help: Allow preset references to have explicit titles
Improve the CMake domain's 'preset' role, and reference resolving for the same, to also accept explicit titles (i.e. 'title <ref>'). Also, remove some stray, inaccessible debugging code that was overlooked in a previous round of improvements.
This commit is contained in:
@@ -570,6 +570,7 @@ class CMakeXRefRole(CMakeReferenceRole[XRefRole]):
|
||||
_re_sub = re.compile(r'^([^()\s]+)\s*\(([^()]*)\)$', re.DOTALL)
|
||||
_re_genex = re.compile(r'^\$<([^<>:]+)(:[^<>]+)?>$', re.DOTALL)
|
||||
_re_guide = re.compile(r'^([^<>/]+)/([^<>]*)$', re.DOTALL)
|
||||
_re_explicit = re.compile(r'^([^<>]+)\s+<([^<>]+)>$', re.DOTALL)
|
||||
|
||||
def __call__(self, typ, rawtext, text, *args, **kwargs):
|
||||
if typ == 'cmake:command':
|
||||
@@ -590,7 +591,12 @@ class CMakeXRefRole(CMakeReferenceRole[XRefRole]):
|
||||
if m:
|
||||
text = f'{m.group(2)} <{text}>'
|
||||
elif typ == 'cmake:preset':
|
||||
text = f'CMakePresets.{text}'
|
||||
m = CMakeXRefRole._re_explicit.match(text)
|
||||
if m:
|
||||
rawtext = f'{m.group(1)} <CMakePresets.{m.group(2)}>'
|
||||
text = f'{m.group(1)} <CMakePresets.{m.group(2)}>'
|
||||
else:
|
||||
text = f'CMakePresets.{text}'
|
||||
return super().__call__(typ, rawtext, text, *args, **kwargs)
|
||||
|
||||
# We cannot insert index nodes using the result_nodes method
|
||||
@@ -777,13 +783,12 @@ class CMakeDomain(Domain):
|
||||
if not docname:
|
||||
return None
|
||||
|
||||
if node['refexplicit']:
|
||||
sectname = node.astext()
|
||||
|
||||
return make_refnode(builder, fromdocname, docname, labelid,
|
||||
nodes.literal('', sectname), target)
|
||||
|
||||
import sys
|
||||
print(typ, target, node, file=sys.stderr)
|
||||
print(docname, labelid, sectname, file=sys.stderr)
|
||||
|
||||
if obj is None:
|
||||
# TODO: warn somehow?
|
||||
return None
|
||||
|
||||
Reference in New Issue
Block a user