While working on NppPresage, the Notepad++ predictive text plugin I am writing, I ran into an interesting problem which led me on a journey of discovery of some useful and powerful Windows debugging tools.
The problem started occuring when testing my NppPresage plugin with the latest build of Notepad++. After exiting Notepad++, the following error message box would appear, when the NppPresage plugin is installed:
Microsoft Visual C++ Runtime Library
This application has requested the Runtime to terminate it in an unusual way.
I'd like to share with you a precious software gem: Scintilla.
Scintilla is an amazingly powerful text editing component. I am coding Prompter, a presage based demo application, on top of the Scintilla editing control because of Scintilla's impressive features, primarily portability and autocompletion support.
It is tough to produce high quality code, under tight deadlines, solving complex problems, with constantly changing requirements.
But let's forget for a moment about the intellectual challenges posed by engineering correct and performant software, and let's focus on the physical demands imposed on software engineers.
I am not suggesting that software engineering is among the most physically demanding professions, but I believe that sometimes we fail to recognise the physical strain imposed by being confined at a desk, precariously sitting on a chair, hunching over a keyboard, staring at a computer display for prolonged periods of time, furiously typing blocks of source code.
This might help fellow Emacs users needing to replace a given string with a new string containing a newline.
I wanted to split a very long list of semicolon separated JARs to insert them in a Java manifest file to get around the dreaded "Input line too long" problem on Windows.
What I wanted to do was to M-x replace-string ; ENTER with a newline and a space. Here lies the problem, the replace-string command rightfully interprets ENTER to mean that the replacement string has been entered, and not to mean that it should substitute with a newline.
Debugging Java applications remotely can be extremely useful when the machine you are debugging on does not have access to the source, or when the application you would like to debug is run within a complex wrapper or framework (i.e. Maven).
If you ever wished to debug a Java application remotely using Eclipse, here is how you do it.