写了一个Notepad++的markdown插件

一直比较喜欢Notepad++这个文本编辑器,免费,各种插件,轻量级。

而我最近要写一些文档,想用textile这个轻量级的标记语言来写。自己也用c++去实现一个textile的解析引擎,目前这个还没有完成,网上也没有现成的对应开源库。

感觉textile还是比markdown小众多了,所以准备先实现一个markdown的版本。正好Notepad++还没有Markdown插件,于是我就准备写一个,也为社区做一份共享吧。这个插件的markdown解析库用的是Chad Nelson的Cpp-Markdown,感谢他的所做的工作,这个是他工程的链接http://sourceforge.net/projects/cpp-markdown/

然后就开始网上找资料学习如何开发markdown插件,这里面有个对应的开发链接:http://sourceforge.net/apps/mediawiki/notepad-plus/index.php?title=Plugin_Development。我基本也是看着这边文章来一步步学习插件开发的。里面还有一个demo工程,这个很有用。

介绍一下我这个插件的features吧:

  • 可以分屏显示一个预览框
  • 可以选中实时预览markdown的格式
  • 可以把生成的markdown格式复制到剪切板

这个插件的代码已经在github上开源了,地址:https://github.com/plxaye/NppMarkdown。

This plugin has been open sourced on github,there is the link https://github.com/plxaye/NppMarkdown.

NppMarkdown-1

 

22:36 2015/8/8
最近计划做两件事:
1.完善markdown渲染html自定义样式的功能。
2.插件使用的Cpp-Markdown库渲染出的html格式有些问题,看看能否找到合适的替代品。

解决完以上两个问题,准备把插件提交到官方。

ChangeLog:

20:51 2015/2/3
1.减少了预览按钮的高度。reduce preview button height.
2.支持自定义markdown渲染出的html样式。support custom css Styles.
3.解决乱码问题。Automatic detection codepage and convert text.
下载(download)NppMarkdown_2.2015.12.3

10:17 2014/10/28
fix bug:can’t used on xp platform.
version:2.0.10.28
NppMarkdown.dll md5:f667923fc08dd88d6a934da25cc083d5

下载(download)NppMarkdown_2.0.10.28

 

 

《写了一个Notepad++的markdown插件》有28个想法

  1. Fix UTF-8 bug:

    — a/PreViewDlg.h
    +++ b/PreViewDlg.h
    @@ -7,6 +7,8 @@
    #include
    #include
    #include “markdown.h”
    +#include
    +#include
    using namespace std;

    extern CAppModule _Module;
    @@ -80,10 +82,26 @@ public:
    doc.write(stream);
    std::string aHtml = stream.str();

    – USES_CONVERSION;
    – wstring wHtml = A2W(aHtml.c_str());

    – SetBodyText(wHtml.c_str());
    + USES_CONVERSION;
    + int codepage = (int)::SendMessage(curScintilla, SCI_GETCODEPAGE, 0, 0)
    + wstring wHtml;
    + std::wstring_convert<std::codecvt_utf8> myconv;
    + switch (codepage)
    + {
    + case (int)SC_CHARSET_ANSI:
    + case (int)SC_CHARSET_GB2312:
    + case (int)936: // GBK
    + wHtml = A2W(aHtml.c_str());
    + break;
    + case (int)SC_CP_UTF8:
    + wHtml = myconv.from_bytes(aHtml);
    + break;
    + default:
    + wHtml = _T(“Not supported encoding (not UTF8/GB2312/GBK/ANSI)”);
    + break;
    + }
    +
    + SetBodyText(wHtml.c_str());
    delete[] buf;
    }

    1. 最新的支持自动检测文件编码,可以解决中文乱码问题。
      这个插件我最近准备更新一下。

        1. 可能是markdown解析库的问题。我用的是Cpp-Markdown库。
          我一直在寻找一个对markdown支持比较完善的库,但是还没有找到。

  2. 你好,我用了你的插件NppMarkdown_2.2015.12.3
    完全没有反应,不知道怎么预览,就是说不知道怎么使用,有没有什么快捷键之类的东西?

发表评论

电子邮件地址不会被公开。 必填项已用*标注