142 def loader(ui): |
142 def loader(ui): |
143 docdir = os.path.join(util.datapath, 'help') |
143 docdir = os.path.join(util.datapath, 'help') |
144 path = os.path.join(docdir, topic + ".txt") |
144 path = os.path.join(docdir, topic + ".txt") |
145 doc = gettext(util.readfile(path)) |
145 doc = gettext(util.readfile(path)) |
146 for rewriter in helphooks.get(topic, []): |
146 for rewriter in helphooks.get(topic, []): |
147 doc = rewriter(topic, doc) |
147 doc = rewriter(ui, topic, doc) |
148 return doc |
148 return doc |
149 |
149 |
150 return loader |
150 return loader |
151 |
151 |
152 helptable = sorted([ |
152 helptable = sorted([ |
182 helphooks = {} |
182 helphooks = {} |
183 |
183 |
184 def addtopichook(topic, rewriter): |
184 def addtopichook(topic, rewriter): |
185 helphooks.setdefault(topic, []).append(rewriter) |
185 helphooks.setdefault(topic, []).append(rewriter) |
186 |
186 |
187 def makeitemsdoc(topic, doc, marker, items, dedent=False): |
187 def makeitemsdoc(ui, topic, doc, marker, items, dedent=False): |
188 """Extract docstring from the items key to function mapping, build a |
188 """Extract docstring from the items key to function mapping, build a |
189 single documentation block and use it to overwrite the marker in doc. |
189 single documentation block and use it to overwrite the marker in doc. |
190 """ |
190 """ |
191 entries = [] |
191 entries = [] |
192 for name in sorted(items): |
192 for name in sorted(items): |
209 entries.append('\n'.join(doclines)) |
209 entries.append('\n'.join(doclines)) |
210 entries = '\n\n'.join(entries) |
210 entries = '\n\n'.join(entries) |
211 return doc.replace(marker, entries) |
211 return doc.replace(marker, entries) |
212 |
212 |
213 def addtopicsymbols(topic, marker, symbols, dedent=False): |
213 def addtopicsymbols(topic, marker, symbols, dedent=False): |
214 def add(topic, doc): |
214 def add(ui, topic, doc): |
215 return makeitemsdoc(topic, doc, marker, symbols, dedent=dedent) |
215 return makeitemsdoc(ui, topic, doc, marker, symbols, dedent=dedent) |
216 addtopichook(topic, add) |
216 addtopichook(topic, add) |
217 |
217 |
218 addtopicsymbols('filesets', '.. predicatesmarker', fileset.symbols) |
218 addtopicsymbols('filesets', '.. predicatesmarker', fileset.symbols) |
219 addtopicsymbols('merge-tools', '.. internaltoolsmarker', |
219 addtopicsymbols('merge-tools', '.. internaltoolsmarker', |
220 filemerge.internalsdoc) |
220 filemerge.internalsdoc) |