3个关于OmniMarkupPreviewer报错404的解决办法

2019-04-28


sublime自身带有markdown语法高亮功能,不过却没有markdown预览的功能,需要通过安装插件实现。装上了OmniMarkupPreviewer,发现按下快捷键Ctrl + Alt + O时弹出的浏览器窗口并没有出现预期的结果,而是报错404,于是去网上查了一下,总结了这几个办法。

浏览器里面看到的报错大致如下:

1
2
3
4
5
6
Sorry, the requested URL 'http://127.0.0.1:51004/view/26' caused an error:

'buffer_id(52) is not valid (closed or unsupported file format)'

**NOTE:** If you run multiple instances of Sublime Text, you may want to adjust
the `server_port` option in order to get this plugin work again.

按照提示是找不出原因的,不过翻了一下在github上issue找到两个解决办法,加上在其他地方找到的一个,总共三个,按照顺序都试一下,操作难度从易到难,不过最难的耗时也不过半分钟。

更改服务器或端口

404错误有可能是服务器地址或者端口出错,这两样可以在Preferences > Package Settings > OmniMarkupPreviewer > Settings - Default里面更改:

1
2
3
4
5
6
7
// 原配置
"server_host": "127.0.0.1",
"server_port": 51004,

// 更改后的配置
"server_host": "0.0.0.0",
"server_port": 52000,

并不确定是端口还是服务器地址的问题,所以可以一项项更改后看效果。

删除Strikethrough扩展

进入Preferences > Package Settings > OmniMarkupPreviewer > Settings - User
粘贴以下内容,然后保存。

1
2
3
4
5
{
"renderer_options-MarkdownRenderer": {
"extensions": ["tables", "fenced_code", "codehilite"]
}
}

网上不少人都是用这个方法解决的,看样子这个方法成功率比较高,不过对我没用,我这里生效的方法是第三个

修复Strikethrough扩展

要修复这个扩展需要先找到扩展的存放位置:

Mac

subl “/Users//Library/Application Support/Sublime Text 3/Packages/OmniMarkupPreviewer/OmniMarkupLib/Renderers/libs/mdx_strikeout.py”

Linux

~/.config/sublime-text-3/Packages/OmniMarkupPreviewer/OmniMarkupLib/Renderers/libs/mdx_strikeout.py

Windows平台就自己找了,文件是OmniMarkupPreviewer目录下的mdx_strikeout.py即可。

然后直接更改配置文件,将最后的

1
2
def makeExtension(configs=None):
return StrikeoutExtension(configs=configs)

部分改为:

1
2
3
def makeExtension(*args, **kwargs):
return StrikeoutExtension(*args, **kwargs)
Save, quit and reload Sublime Text.

更改完后是这样的:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
import markdown
from markdown.inlinepatterns import SimpleTagPattern


STRIKEOUT_RE = r'(\~\~)([^\s](?:.*))(\~\~)'


class StrikeoutExtension(markdown.Extension):
""" Strikeout extension for Python-Markdown. """

def extendMarkdown(self, md, md_globals):
""" Modifies inline patterns. """
md.inlinePatterns.add('del', SimpleTagPattern(STRIKEOUT_RE, 'del'), '<not_strong')


#def makeExtension(configs=None):
# return StrikeoutExtension(configs=configs)
def makeExtension(*args, **kwargs):
return StrikeoutExtension(*args, **kwargs)


评论