ghostwriter: 一款makdown编辑器

写文档,最爽的格式就是markdown。

曾经尝试过几款自由开源的markdown编辑器,但都不够理想,不是功能不完善就是缺陷多。

现在我是直接在自己的个人网站上查看最终的显示效果,具体可以看《如何拥有个人域名的网站和邮箱》

尝试的其中一款编辑器就是KDE的ghostwriter,这个markdown编辑器功能挺完善,但缺陷也不少。

2021年时我解决了一个严重的预览界面显示缺陷Chinese preview in HTML is complete now. Update README.md.

如果各位朋友想自己修改或增加功能,可以使用github源码安装。

1 Linux下源码安装

ghostwriter是跨平台的,在Linux、macOS、Windows下都能运行,这里我只介绍Fedora(Linux)下的编译运行,其他平台请参考README.md

先安装Fedora下编译所需的软件:

sudo dnf install qt-devel qt5-qtbase-devel qt5-qtsvg-devel qt5-qtmultimedia-devel qt5-qtwebengine-devel hunspell-devel qt5-linguist -y

源码目录下编译:

qmake-qt5
make
# 安装命令可不执行
# make install

运行软件:

cd build/release/
./ghostwriter

这个软件曾经用着感觉还行。

2 预览界面显示缺陷

2021年6月刚用ghostwriter时,一个很明显的预览界面显示缺陷摆在我面前: 预览界面中文显示不完整,刚开始想放弃这个软件,但又觉得其他功能挺完善的,最后还是决定自己解决缺陷。

现在把这个缺陷介绍一下,也希望各位朋友能和我一起完善ghostwriter。

导致这个缺陷的commit:

// src/cmarkgfmapi.cpp
-    cmark_parser_feed(parser, text.toLatin1().data(), text.length());
+    cmark_parser_feed(parser, text.toUtf8().data(), text.length());

定位到这个原因后,我修改成如下代码:

// src/cmarkgfmapi.cpp
cmark_parser_feed(parser, text.toLatin1().data(), text.toLocal8Bit().length());

中文是Unicode编码,一个汉字占2个字节,而QString.length()一个汉字只当成一个字节,需要修改成QString.toLocal8Bit().length()

我的修改方案是Chinese preview in HTML is complete now. Update README.md.,lioneie是我曾经的签名。

你没看错,就是这么容易解决,参与到自由软件就是这么简单,参与到开源软件就是这么简单。