    <rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:admin="http://webns.net/mvcb/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:content="http://purl.org/rss/1.0/modules/content/">
     <channel>
        <title>ACCU  :: Jumping around in Emacs</title>
        <link>https://members.accu.org/index.php/articles/2831</link>
        <description>Professionalism in Programming</description>
        <dc:language>en-us</dc:language> 
        <dc:creator>Administrator</dc:creator> 
        <admin:generatorAgent rdf:resource="http://www.xaraya.org" /> 
        <admin:errorReportsTo rdf:resource="mailto:webeditor@accu.org" />
       <sy:updatePeriod>hourly</sy:updatePeriod>
       <sy:updateFrequency>1</sy:updateFrequency>
       <docs>http://backend.userland.com/rss</docs>




<div class="xar-mod-head"><span class="xar-mod-title">Programming Topics + CVu Journal Vol 32, #4 - September 2020</span></div>

<table border="0" cellpadding="1" cellspacing="0">
    <tbody>
    <tr>
        <td valign="top">
            Browse in :
       </td>
       <td valign="top">

                                            <a href="https://members.accu.org/index.php/articles/">All</a>

                     &gt;                         <a href="https://members.accu.org/index.php/articles/c13/">Topics</a>

                     &gt;                         <a href="https://members.accu.org/index.php/articles/c65/">Programming</a>
<br />

                                            <a href="https://members.accu.org/index.php/articles/">All</a>

                     &gt;                         <a href="https://members.accu.org/index.php/articles/c76/">Journals</a>

                     &gt;                         <a href="https://members.accu.org/index.php/articles/c77/">CVu</a>

                     &gt;                         <a href="https://members.accu.org/index.php/articles/c414/">324</a>
<br />

                                            <a href="https://members.accu.org/index.php/articles/c65-414/">Any of these categories</a>

                    -                        <a href="https://members.accu.org/index.php/articles/c65+414/">All of these categories</a>
<br />
</td>
   </tr>
   </tbody>
</table>




<div class="xar-error">
   <p>
 <strong>Note:</strong> when you create a new publication type,
the articles module will automatically use the templates
<em>user-display-[publicationtype].xt</em>
and <em>user-summary-[publicationtype].xt</em>.
If those templates do not exist when you try to preview or display a new article,
you'll get this warning :-)  Please place your own templates in themes/<em>yourtheme</em>/modules/articles . The templates will get the extension .xt there. </p>
</div>
<div class="xar-norm xar-standard-box-padding">
   <h1><strong>Title:</strong>&nbsp;Jumping around in Emacs</h1>
<p><strong>Author:</strong>&nbsp;Bob Schmidt</p>
<p>
<strong>Date:</strong> 05 September 2020 18:20:56 +01:00 or Sat, 05 September 2020 18:20:56 +01:00</p>
<p><strong>Summary:</strong>&nbsp;Silas S. Brown shares a tip for navigating code.</p>
<p><strong>Body:</strong>&nbsp;<p>When working with code I didnâ€™t write, I frequently find myself asking â€œcan I check that function really does what its name suggestsâ€, i.e. I need to find the definition of a function (or class etc) thatâ€™s mentioned, which might be in another file or directory. My habitual way of handling this has been to run the Unix <code>grep</code> tool from inside Emacs, look at (and, if necessary, search in) these search results, and figure it out. This is a habit that perhaps has some scope for optimisation.</p>

<p>The traditional solution for both Emacs and Vim involves Ctags, but this can be a hassle to set up for each project, especially when multiple programming languages are involved. So I recently started using an Emacs package called dumb-jump which is meant to take you there â€˜most of the timeâ€™ with little setup. Dumb Jump can use normal <code>grep</code>, or (if installed) optimised versions of grep, such as <code>git-grep</code> which knows to check only tracked files in Git projects, or â€˜The Silver Searcherâ€™ maintained by Geoff Greer which has Boyer-Moore string search, <code>mmap()</code> etc and also tries to avoid binaries, editor-created backups etc. Dumb Jumpâ€™s setup instructions are in its README <a href="#[B1]">[1]</a> and then usage is normally a matter of holding down the Alt key while pressing dot (<code>.</code>) when the cursor is on the name of the thing whose definition you want to see, and then Alt-comma (<code>,</code>) to go back. It helps that dot and comma are next to each other on both the QWERTY and Dvorak keyboard layouts (if using Dvorak, you might have a right-hand Alt Gr key you can use to make the combination easier).</p>

<p>I understand that JetBrainsâ€™ products have similar functionality built in, although I havenâ€™t tried it as Iâ€™ve been using Emacs since last century (when it was jokingly called Eight Megabytes And Constantly Swapping: itâ€™s hard to believe itâ€™s now considered lightweight compared with modern IDEs, while all the while I was wondering if I need Vim skills to further reduce my memory requirements).</p>

<h2>Reference</h2>

<p class="bibliomixed"><a id="[B1]"></a>[1]	Dumb Jump:  <a href="https://github.com/jacktasia/dumb-jump">https://github.com/jacktasia/dumb-jump</a></p>

<p class="bio"><span class="author"><b>Silas S. Brown</b></span> Silas is a partially-sighted Computer Science post-doc in Cambridge who currently works in part-time assistant tuition and part-time for Oracle. He has been an ACCU member since 1994.</p>
</p>
<p><strong>Notes:</strong>&nbsp;</p>
<p><em>More fields may be available via dynamicdata ..</em></p>
</div>
</channel>
</rss>
