<html><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div><br></div><div>On Aug 17, 2009, at 3:58 PM, Rainer Joswig wrote:</div><div><blockquote type="cite"><span class="Apple-style-span" style="color: rgb(0, 0, 0); ">* It occupies the right click menu, also with a lot of modifiers. &nbsp;<br>Every other tool out there would like to get the right click menu, &nbsp;<br>soon. On the Lisp Machine for example, right click in the editor &nbsp;<br>brings up a small menu, where one of the menu items is 'List &nbsp;<br>Definitions' and on invoking it, it displays a typeout window with &nbsp;<br>mouse sensitive definitions names and their type (class, function, &nbsp;<br>variable, ...). LispWorks has a right click menu that repeats some of &nbsp;<br>the menus from the menubar (which I think is a bit of overkill for a &nbsp;<br>Mac UI).</span></blockquote><br></div><div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 12px/normal Helvetica; "><font class="Apple-style-span" color="#000000">This is a first cut at dealing with some of the issues Rainer mentions.&nbsp; It is just a prototype; feel free to add your suggestions.</font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 12px/normal Helvetica; min-height: 14px; "><font class="Apple-style-span" color="#000000"><br></font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 12px/normal Helvetica; "><font class="Apple-style-span" color="#000000">The idea is that Hemlock's contextual popup menu is an important and limited resource.&nbsp; No one tool should have exclusive ownership.&nbsp; The UI, therefore, needs a mechanism for conveniently switching between tools.</font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 12px/normal Helvetica; min-height: 14px; "><font class="Apple-style-span" color="#000000"><br></font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 12px/normal Helvetica; "><font class="Apple-style-span" color="#000000">One approach is to have a "default" tool.&nbsp; Right-Click produces the default tool's menu.&nbsp; That menu has tool specific entries, but it also has a "tools" submenu.&nbsp; The submenu lists all the other available tools and selecting one changes the current default.&nbsp; This is a simple approach and may be sufficient.&nbsp; It's the approach implemented by this prototype.</font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 12px/normal Helvetica; min-height: 14px; "><font class="Apple-style-span" color="#000000"><br></font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 12px/normal Helvetica; "><font class="Apple-style-span" color="#000000">Another approach would be to make Liist-Definitions the permanent "default".&nbsp; It's menu would always be displayed when you Right-Click.&nbsp; It would have a "tools" submenu and you could access other tools by navigating through a hierarchy of submenus.&nbsp; This approach is less democratic and navigating through a hierarchy of submenus is tedious.&nbsp;There are probably other paradigms that we could consider as well.</font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 12px/normal Helvetica; min-height: 14px; "><font class="Apple-style-span" color="#000000"><br></font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 12px/normal Helvetica; "><font class="Apple-style-span" color="#000000">In any case, there are four new tools:&nbsp; Context-Menu-CM, Hemlock-Commands-CM, CL-Documentation-CM and List-Definitions-CM.&nbsp; The Hemlock-Commands-CM tool includes first-cut implementations of "Inspect Symbol at Point" (control-x control-i) and "Symbol Documentation" (control-x control-d).&nbsp; "Symbol Documentation" pops a dialog and displays CCL's documentation when it exists.&nbsp; If not, it displays MCL's documentation. The dialog also has a "HyperSpec" button, for when you need a more elaborate explanation.&nbsp; The HyperSpec is required, so you either have to be connect to the internet or you need a local copy. See the Context-Menu/ReadMe.</font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 12px/normal Helvetica; min-height: 14px; "><font class="Apple-style-span" color="#000000"><br></font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 12px/normal Helvetica; min-height: 14px; "><font class="Apple-style-span" color="#000000"><br></font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 12px/normal Helvetica; "><font class="Apple-style-span" color="#000000">If you would like to give it a try, do this:</font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 12px/normal Helvetica; min-height: 14px; "><font class="Apple-style-span" color="#000000"><br></font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 12px/normal Helvetica; "><font class="Apple-style-span" color="#004FAF"><font class="Apple-style-span" face="Monaco" size="2"><span class="Apple-style-span" style="font-size: 10px;">cd&nbsp; ccl/contrib/</span></font></font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 12px/normal Helvetica; "><font class="Apple-style-span" color="#004FAF"><font class="Apple-style-span" face="Monaco" size="2"><span class="Apple-style-span" style="font-size: 10px;">svn update</span></font></font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 12px/normal Helvetica; min-height: 14px; "><font class="Apple-style-span" color="#000000"><br></font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 12px/normal Helvetica; "><font class="Apple-style-span" color="#000000">That will pull in new versions of all new contribs, including Context-Menu-CM, Hemlock-Commands-CM, CL-Documentation-CM and List-Definitions-CM.</font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 12px/normal Helvetica; min-height: 14px; "><font class="Apple-style-span" color="#000000"><br></font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 12px/normal Helvetica; "><font class="Apple-style-span" color="#000000">In the Listener or in ~/ccl-init.lisp execute these forms:</font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 12px/normal Helvetica; min-height: 14px; "><font class="Apple-style-span" color="#000000"><br></font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; "><font class="Apple-style-span" color="#004FAF">;;; your own path here, if you are using a local copy of the HyperSpec:</font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; "><font class="Apple-style-span" color="#004FAF">(setq gui::*hyperspec-root-url* (gui::pathname-to-url "/Lisp/hyperspec-7-0/"))</font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 12px/normal Helvetica; min-height: 14px; "><font class="Apple-style-span" color="#004FAF"><br></font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; "><font class="Apple-style-span" color="#004FAF">(require :context-menu-cm)</font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; "><font class="Apple-style-span" color="#004FAF">(require :cl-documentation-cm)</font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; "><font class="Apple-style-span" color="#004FAF">(require :list-definitions-cm)</font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; "><font class="Apple-style-span" color="#004FAF">(require :hemlock-commands-cm)</font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 10px/normal Monaco; "><font class="Apple-style-span" color="#004FAF">(cmenu:set-default-tool "List-Definitions-CM")</font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 12px/normal Helvetica; min-height: 14px; "><font class="Apple-style-span" color="#000000"><br></font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 12px/normal Helvetica; min-height: 14px; "><font class="Apple-style-span" color="#000000"><br></font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 12px/normal Helvetica; "><font class="Apple-style-span" color="#000000">Note: Context-Menu provides a simple API for writing new tools.</font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 12px/normal Helvetica; "><br></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 12px/normal Helvetica; "><br></div></div></body></html>