Category Archives: Code

MarkdownViewer++ 0.8.0 – Markdown converter changed

After a long delay I finally updated my Notepad++ plugin MarkdownViewer++.

Because of the many requests for more syntax support (especially pipe tables), I changed the internal converter library from to Markdig.

By that, an update to CommonMark Spec 0.28 was achieved and support for a lot of extensions such as pipe and grid tables. You can check them out in the Readme.

Grab the newest release 0.8.0 right now or update via the Plugin Manager:

  • Changed the to Markdig
  • Updated PDFSharp and HTMLRenderer.PDFSharp accordingly
  • Updated the Plugin Template

MS Project VBA Column Visibility FTW

I am currently working on a MS Project VBA project (yeah, VBA glory ^^’) and am experience so many odd issues and problems in finding potential solutions that I have to write a short (hopefully) helpful article.

In general: MS Project VBA is a lot different than everything you might now from e.g. Excel. MS Project seems to be a little outside of the whole Office ecospace and therefore requires some additional handling of potentially easy functionality. One of these oddities are the MS Project planning view columns.

Adding a normal new column is not as easy as you would think. You just cannot add a new column at the end as you would do in Excel, but you have to “reuse” the existing fields of e.g. TaskText, Attributes etc. with their many occurrences (i.e. pjTaskText1-30). Editing the TableEditEx, renaming a column and displaying it… a strange-to-look-at sort of coding.

Is a column visible?

I was able to handle a lot but nearly got insane (insan’er?) trying to find out if a current column/field is visible, as only visible fields can be highlighted. I googled a lot trying to find this problem and a potential solution. There is even a multiple year old post on reddit without any solution 🙂

So, I had no other choice but take everything I was able to find and grasp and create my personal visibility check function, based on the very helpful post by Brian Kennemer and thought I should share it for others restless souls in the future ^^

Maybe there is an easier or better solution out there. But when it comes to MS Project and VBA I am really starting to become desperate and grab for any solution, no matter how ugly it is (yeah, VBA, I know ^^’).

MarkdownViewer++ 0.6.0 – x64 support and settings

Because of the good and constant feedback the MarkdownViewer++ plugin for Notepad++ is striving for improvements and more 🙂

With the newest release 0.6.0 several improvements, fixes and new features were integrated:

  • Now the plugin is Notepad++ x86 and x64 compatible
  • Updated dependencies for improved PDF exports
  • Several bugfixes
  • Added an options dialog to allow the customization of CSS, PDF exports, rendered files etc.

MarkdownViewer++ Options

The MarkdownViewer++ offers several options to customize your plugin experience. You can open the options dialog via the Plugins sub-menu.

MarkdownViewer++ Options


On the General tab you can configure the file extensions the MarkdownViewer++ renderer should actually display. If the box is empty all files will be rendered. If you want to limit the rendering to certain file extensions list them in the textbox as comma-separated list without leading dot.

For example, if you only want to render txt, log and md files just type in "txt,log,md".

Please note that only file extensions are compared and no certain mime types or anything. If a text document is not named XYZ.txt it will not be rendered.


On the HTML tab you can fill in Custom CSS, which is used when rendering the MarkdownViewer++ preview as well as the exported HTML. Therefore, you are able to e.g. change bullet-point-list icons or sizes of headlines. The custom CSS textbox is limited to 32767 characters.


On the PDF tab you can set the orientation and page size of the exported PDF. The content is provided by the PDFSharp enumerations.

A Notepad++ plugin for Markdown glory

Long time no see and back with a new project ^^

I am writing everything in Markdown syntax (you should see my many “notes.txt” or “” files ^^#) As such, I also export HTML and PDF files from them and I am constantly checking how it looks. So far, I was using Dillinger or StackEdit. Great tools, actually awesome. That is why I used them for years now.

But, Notepad++ is my main editor, opened 24/7 basically. And to always track my files in the browser and “export” them to my local filesystem just didn’t seem reasonable and feasible anymore. That’s why I went for a MarkdownViewer++, with basic rendering, HTML and PDF export.

I made a Notepad++ plugin to render the current open (Markdown) file in a dockable window as a rendered HTML to see all changes and Markdown “beautified” in an instant. It can be found at GitHub MarkdownViewer++.


Current basic features are:

  • Dockable panel (toggle) with a rendered HTML of the currently selected file/tab
  • CommonMark compliant (0.27)
  • Links open in a separate Browser
  • Basic HTML Export
  • Basic PDF Export
  • Unicode Notepad++ 32-bit plugin

Go try, if you like to. And leave a comment, issue, suggestion etc. if it should be improved. It is not perfect, I know it underperforms with large documents and am working on it. But I am also happy about any feedback.

CDI – DIY – Manual Injection

Enterprise development can be good and bad: It may support you with great managed environments, awesome conventions and configuration possibilities. But sometimes it also forces you into too tight railings, thinking it would be for your best, having you answering: “Wait… why… WTF?”

Unmanaged Dependency Injection

One trend especially jumps between brilliance and madness: Dependency Injection! To feature a common, broad context management supporting your needs with simple references, view and scope management is something very intriguing. But beware if you only peak out the window for once… it will immediately drop all its support for you and your code.

A managed environment can be supportive in many ways and eases our every day life but often misses the scope of Software Engineering and its possible uses. This leads to limitations or horrible inter-configuration-setup-libraries architecture that no one can manage but god himself.

Manual Dependency Injection

Therefore, it might happen that you have to jump between e.g. two components of managed and unmanaged source, in desperate need to access the managed environment. For that you can manually check the registered BeanManager and grab your managed resources yourself.

By checking the local context and grabbing the BeanManager you have the foundation to fiddle around and grasp of the managed entities.

With the BeanManager you are now able to look up the managed beans by class or name and iterate over what you are looking for. Below you can find an example how to look for the first managed bean of a given class, if any.

Of course, I would always encourage to stay as managed as possible, if you develop in such an environment. But especially if you have to deal with legacy modules, or dedicate multi-purpose components (which I had to), this solution encapsulated in a utility helper can save you many brain cells and long evenings spending with real development ^^’.

Big thanks to Dominik Dorn for this life saving hint.