@@ -780,7 +780,9 @@ def process_doc(self, env: "BuildEnvironment", docname: str, document: nodes.doc
780780 self .labels [name ] = docname , labelid , sectname
781781
782782 def add_program_option (self , program : str , name : str , docname : str , labelid : str ) -> None :
783- self .progoptions [program , name ] = (docname , labelid )
783+ # prefer first command option entry
784+ if (program , name ) not in self .progoptions :
785+ self .progoptions [program , name ] = (docname , labelid )
784786
785787 def build_reference_node (self , fromdocname : str , builder : "Builder" , docname : str ,
786788 labelid : str , sectname : str , rolename : str , ** options : Any
@@ -941,6 +943,10 @@ def _resolve_option_xref(self, env: "BuildEnvironment", fromdocname: str,
941943 progname = node .get ('std:program' )
942944 target = target .strip ()
943945 docname , labelid = self .progoptions .get ((progname , target ), ('' , '' ))
946+ # for :option:`-foo=bar` search for -foo option directive
947+ if not docname and '=' in target :
948+ target2 = target [:target .find ('=' )]
949+ docname , labelid = self .progoptions .get ((progname , target2 ), ('' , '' ))
944950 if not docname :
945951 commands = []
946952 while ws_re .search (target ):
0 commit comments