<div dir="ltr">Ooh that looks nice.<div><br></div><div>Is anybody on this list using Emacs and doing that? Emacs appears to offer three ways to (build? read?) ctags, and also at least two mercury modes. (I settled on Mercury Metal Mode a while ago after the default somehow didn't do what I wanted, can't remember now).</div></div><br><div class="gmail_quote"><div dir="ltr">On Tue, Dec 18, 2018 at 7:30 PM Zoltan Somogyi <<a href="mailto:zoltan.somogyi@runbox.com">zoltan.somogyi@runbox.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><br>
<br>
On Tue, 18 Dec 2018 19:01:20 -0500, Jeffrey Brown <<a href="mailto:jeffbrown.the@gmail.com" target="_blank">jeffbrown.the@gmail.com</a>> wrote:<br>
> Hi! I'm reading through the Mercury libraries. When I do that in Haskell,<br>
> if I come across a function I don't recognize, there are a few ways to<br>
> determine where it came from. (For instance you can import everything the<br>
> library imports into the REPL and then run "?i foo" to find foo's<br>
> provenance.)<br>
> <br>
> In Mmercury, if I could be sure that a line of code defines the function<br>
> foo if and only if that line starts with the word foo followed by no blank<br>
> space, then I'll just grep the libraries for "^foo". Does that<br>
> if-and-only-if condition actually hold?<br>
<br>
It holds *if* you follow the standard Mercury programming style.<br>
<br>
> Is this what y'all do?<br>
<br>
No. The Mercury developers use tags files:<br>
<br>
<a href="https://en.wikipedia.org/wiki/Ctags" rel="noreferrer" target="_blank">https://en.wikipedia.org/wiki/Ctags</a><br>
<br>
The Mercury distribution contains mtags, a tool for building tags files<br>
for Mercury programs. Once you have run e.g. "mtags *.m", then<br>
you can jump to the definition of a type, predicate or function<br>
with a simple command in most editors. For example, when the cursor<br>
is on the start of a name in vim, the command control-] will jump<br>
to the definition of whatever entity it names.<br>
<br>
Zoltan.<br>
</blockquote></div><br clear="all"><div><br></div>-- <br><div dir="ltr" class="gmail_signature"><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div>Jeff Brown | Jeffrey Benjamin Brown</div><div dir="ltr"><a href="https://msu.edu/~brown202/" style="font-size:12.8px" target="_blank">Website</a>   |   <a href="https://www.facebook.com/mejeff.younotjeff" style="font-size:12.8px" target="_blank">Facebook</a>   |   <a href="https://www.linkedin.com/in/jeffreybenjaminbrown" style="font-size:12.8px" target="_blank">LinkedIn</a><span style="font-size:12.8px">(spammy, so I often miss messages here)   </span><span style="font-size:12.8px">|</span><span style="font-size:12.8px">   </span><a href="https://github.com/jeffreybenjaminbrown" style="font-size:12.8px" target="_blank">Github</a><span style="font-size:12.8px">   </span></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div>