Fast search, easy linking, Go2, and glossary popups for your Windows source and text files.
IntraMine provides browser-accessed Editor, Viewer, and Search services on your intranet that are designed to ease the creation and reading of in-house documentation, and speed up code comprehension. It's for Windows only.
Here are the top seven enhancements.
Rich glossary popups mean you don't have to worry about using a term before it's defined, or interrupt the flow to provide an intrusive paragraph or long comment: hovering over a defined term shows the definition, complete with rich text, tables, images, and clickable links. They're available in all text and source files when using the Viewer or Editor.
FLASH links1 are typically as simple as typing main.go and it becomes the link you want: from a list of all full paths of interest to you, it's the main.go that's nearest to the file where you're typing. You can even link directly to a function, class, or heading, such as main.go#worker() or "IntraMine May 4 2024.txt#Installer stage tracking". Available for all indexed files when using the Viewer or Editor.
Gloss is IntraMine's minimal memorable Markdown variant for your intranet which is tuned for creating in-house documentation, including development logs and the source for fully standalone HTML when you want wider distribution. Gloss includes FLASH links and glossary popups. And image hovers, which are starting to catch on. And styled text, headings, a synchronized auto-generated table of contents2, selection and search result highlighting in the text and down the scroll bar, line numbers, switch from hover images to inlined with one click, a massive English spell checker, and more. Such as unforgettably simple tables and support for inline HTML including your custom CSS and JavaScript. And footnotes that pop up on hover, just like glossary entries. Use Gloss in your .txt files, view the HTML output with IntraMine's Viewer or after conversion to standalone HTML using the Glosser service.
Go2 is simple enough that I'll explain it all here. In a file displayed with IntraMine's Viewer or Editor select a word or short phrase, and keep your cursor fairly still: a popup will appear in a second or so listing links to files that contain the word or phrase. The less common the word or phrase, the more useful the links will probably be. Only indexed files will be searched - files contained in folders that are listed in data/search_directories.txt, which you will be asked to set when you install IntraMine. Use Go2 to visit a CSS selector mentioned in a JavaScript file, go to a function definition from a source or text file, basically go to just about anything from anywhere.
For wider distribution of your documents IntraMine includes gloss2html.pl, a script that generates fully standalone HTML from Gloss-styled text, with almost all Gloss features (including glossary popoups). These are self-contained HTML documents, not MTH, and no support folder is needed. If you want a more convenient approach to generating the HTML, the Glosser service provides a quick way to pick the file or folder and image settings.
If you prefer to stick to regular MultiMarkdown for some documents instead of switching to Gloss, IntraMine adds an automatically generated and synchronized table of contents, FLASH links, and glossary popups in both the source editor and HTML view, without touching your source.
And you'll have sub-second search over up to half a million source and text files, even without specifying a directory or language or extension (but you can).
Strictly speaking IntraMine is a tech demo, but some considerable effort over eight years has gone into making IntraMine an outstanding choice for editing and reading text documents, generating in-house documentation, searching, and understanding source code. If you like IntraMine, pester the developers of your favorite IDE and they might add enough of IntraMine's features that you won't need it any more.
Grab a copy of IntraMine, open the IntraMine/__START_HERE_INTRAMINE_INSTALLER/ folder and double-click on "1 READ ME FIRST how to install IntraMine.html". You'll be guided through enabling PowerShell, generating the needed install commands by double-clicking on a batch file, and then running the installer by pasting those commands into a PowerShell window. The installer will first ask you to enter a list of folders that are of interest to you, for searching and for building a full paths list, after which you'll be asked to do a couple of small things along the way. At the end IntraMine will be running and you'll see instructions on how to access, stop, and restart IntraMine.
What's installed? Strawberry Perl with some modules, Elasticsearch, Universal ctags, and File Watcher Utilities.
Search results: 125,000 files searched for "FindFileWide", results in 0.09 seconds. No restriction on directory or language. Clicking a link opens the Viewer, clicking on a little pencil icon opens the Editor.
Some search hits for "FindFileWide" in a file, seen with IntraMine's Viewer. The hits are in pink, in the text and down the scroll bar. A click on "allEntries" has highlighted all instances in green, in the text and down the scroll bar. There are automatically generated links to a subroutine in another file (intramine_filetree.pl#GetDirsAndFiles()), a specific line in another file (elastic_indexer.pl#101), and a subroutine within the same file (FindFileWide()).
A simple glossary popup. The cursor is paused over "FLASH link". Links in the definition are functional.
A glossary popup showing off. This is the popup for "Gloss", IntraMine's Markdown for intranet use.
If you see a use for IntraMine's FLASH link algorithms etc in your own work, go right ahead: all original work is covered by an UNLICENSE. (Some software included with or used by IntraMine, such as Perl, Unversal ctags, CodeMirror and Elasticsearch, is covered by separate license agreements.)
- Windows 10 / 11.
- IPv4 must be enabled on the PC where IntraMine is installed (this is overwhelmingly the default). IPv6 can be enabled or disabled as you wish.
- Strawberry Perl 5 version 30 or later (install instructions are included). The "Quick Install" will install version 5.40.
- roughly 4 GB of RAM for IntraMine (including Elasticsearch).
- your own source and text files that can change should be attached directly to your IntraMine PC using SATA or USB (locally attached storage). NAS files can be indexed for search and FLASH linking, but changes to them won't be detected, so that's fine for library files but not your own work.
- IntraMine is for use only on an intranet, and provides no security on its own. If your intranet isn't locked down reasonably well, you might want to pass.
Service | A brief description |
---|---|
Main | A round-robin redirect service, can handle high load |
Search | Sub-second search across your whole intranet |
Editor | IntraMine's editor, supports FLASH links, glossary popups etc |
Viewer | File viewer, supports FLASH links, glossary popups etc |
Files | A simple two-pane file explorer, has image hover previews |
Linker | Generates FLASH links, Go2 etc |
Opener | Open file using selected editor |
Status | Monitor/Start/Stop services |
Mon | IntraMine's feedback page |
Upload | Upload a file |
Watcher | Reports file system changes (no polling) |
WS | WebSockets communication |
Reindex | Rebuild your Elasticsearch index without restarting |
Glosser | Convert Gloss-styled text to HTML |
EM | Extract Method for Perl |
Days | Days between dates |
Events | A simple events calendar |
Cash | Do your budget |
ToDo | Kanban with links, images, styling |
Cmd | Run anything, at your own risk |
DBX | Example service with database |
Bp | Example service, static |
Chat | The usual chat |
See the documentation.
When you're happy, jump to the installation instructions.
If you spot a bug, please do the kindness of sending an email describing it to klb42@proton.me.
Enjoy!
Footnotes
-
Fast Local Automatic Source and text Hyperlinks. Yes, adding "links" is redundant. By the way, with IntraMine you wouldn't have to bounce down and up to read a footnote: instead you'd see it in a popup when you pause your cursor over the link. Glossary popups work the same way. ↩
-
A table of contents is currently generated automatically for: Plain text (Gloss), Perl, Pod, C / C++, Go, JavaScript, CSS, Clojure, Erlang, OCaml, PHP, Python, Ruby, TypeScript, Rust, Java, C#, VBScript(.vb), VB.NET(.vbs), Haskell, Julia, Fortran, COBOL. ↩