Code Browser
thomas_braun
The CodeBrowser makes browsing through projects with multiple files and lots of functions easy, convenient and pleasant.
Requirements
- Igor Pro version 6.3.0 or later
Installation
- Install Igor.
- Start Igor. This creates a folder called WaveMetrics in Documents. Close Igor.
- Extract the zip file into a folder somewhere on your disc.
- Create a link from
CodeBrowser-v*/procedures
toDocuments\WaveMetrics\Igor Pro [6-8] User Files\Igor Procedures
. - Start Igor. You can now find
CodeBrowser/Open
in the main menu.
Features
- Shows all functions/macros from a procedure file including parameter types, return types and special properties like static and threadsafe.
- Shows Menu/Constant/StrConstant/Structure entries.
- Shows the structure name for window hook and background tasks for easier searching.
- Allows jumping to the definition of these elements within the code by mouse and keyboard.
- Optionally alphabetically sorted lists.
- Shows function comments as tooltips (IP8 only).
- Works with Independent Modules.
For reasons of ease-of-use the function declarations are displayed as myFunction(var, str) -> var
for a function taking a variable and string parameter and returning a variable. Programmers might recognize this as being inspired by the trailing return types from C++11.
Navigation by keyboard
- CTRL+0: Open the panel.
- Jump to the definition of the listbox selection with .
- Pressing any character while the ListBox has the focus activates the first listbox entry which starts with that character.
Limitations
- No parameter types are shown for macros
Screenshot
Project Details
Current Project Release
Release File: | CodeBrowser-v1.3.zip (25.46 KB) |
Version Date: | |
Version Major: | 1 |
Version Patch Level: | 3 |
OS Compatibility: | Windows Mac-Intel |
Release Notes: |
Features:
Bugfixes:
The following people have contributed to this release: $ git shortlog --no-merges -s -n v1.2.. |
Forum
Support
Gallery
Igor Pro 9
Learn More
Igor XOP Toolkit
Learn More
Igor NIDAQ Tools MX
Learn More
Hi Thomas,
Thank you very much for this nice package. I noticed that you have a IgorBeforeQuitHook() function in place which silently saves experiments in the background. I experienced that some aspects of experiment files were saved even though I didn't intend this when closing the program. I wonder what this is for and whether it is really necessary for the package. I would think this may lead to some undesired behavior.
March 9, 2021 at 10:31 pm - Permalink
Hi Stephan.
glad you like the package, and sorry to hear that it did not work on your end as expected. The purpose of the IgorBeforeQuitHook is to sync preferences to disk, kill internal data and the panel before closing. Killing the internal data and closing the panel is necessary to make the saved experiments smaller and also relieves us from the burden to need to handle old panels and internal data with new codebrowser versions.
Of course the bug you described should not happen either. I've now rewritten the hook to be safer, although with the drawback that the codebrowser data and panel is now kept. I've opened https://github.com/byte-physics/igor-code-browser/pull/59 with a fix. Please try that out. And in case you don't use git I can also make a zip available with that patch.
Thanks,
Thomas
March 10, 2021 at 05:12 am - Permalink
Hi Thomas,
Thank you for the quick reply and the fix. The github link is fine for me. I am sorry, I should have given a more precise error report here. The problem is as follows: You may know that Igor does not set the unsaved state when just hiding / unhiding graphs, layouts etc. or changing their order (by bringing different graphs on top without moving any windows). I noticed that the code browser thus inevitably saves the new window state upon closing the application, which in effect alters the state of the experiment file (or at least how graphs are organized). I don't know which other actions 'fail' to trigger the unsaved state in Igor, but having the (unpatched) code browser loaded brought the risk to have such things saved behind the scenes. I think it is the right thing to take this part out. I also often have problems with users leaving stale panels open when saving experiments. Maybe in the future WaveMetrics invents temporary folders and panel states with special 'never save' labels to circumvent this problem.
Stephan
March 10, 2021 at 06:02 pm - Permalink
Thanks for the insight. So the fix does work for you?
March 11, 2021 at 09:14 am - Permalink
Yes, the background saving issue is solved. Thanks again.
March 11, 2021 at 05:37 pm - Permalink
And merged.
March 12, 2021 at 06:00 am - Permalink