Emacs之实时渲染markdown(九十五)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长!

优质专栏:Audio工程师进阶系列原创干货持续更新中……】🚀

人生格言: 人生从来没有捷径,只有行动才是治疗恐惧和懒惰的唯一良药.

更多原创,欢迎关注:Android系统攻城狮

欢迎关注Android系统攻城狮

1.前言

本篇目的:在Emacs中实时预览markdown,摆脱其他markdown第三方软件,实现左边写,右边实时渲染。
折腾了一天,终于调通了,为了让大家少走弯路,将趟过的坑分享给大家。

2.下载配置EAF框架

<1>.下载配置emacs-application-framework(简称:EAF)

# git clone --depth=1 -b master https://github.com/emacs-eaf/emacs-application-framework.git ~/.emacs.d/site-lisp/emacs-application-framework
# cd emacs-application-framework
# chmod +x ./install-eaf.py

安装依赖
# ./install-eaf.py


配置EAF框架
# emacs ~/.emacs
(add-to-list 'load-path "~/.emacs.d/site-lisp/emacs-application-framework/")
(require 'eaf)

3.加载配置应用:Markdown Previewer

其实第二步已经将所有的应用下载下来了,第三步只剩配置而已。但是安装有很多坑,自己注意点。
配置应用和EAF框架

(add-to-list 'load-path "~/.emacs.d/site-lisp/emacs-application-framework/")

;;加载EAF框架
(require 'eaf)

;;加载demo:M-x eaf-open-demo验证是否安装成功
(require 'eaf-demo)

;;加载图片查看器
(require 'eaf-image-viewer)

;;加载markdown; M-x eaf-open打开markdown文件
(require 'eaf-markdown-previewer)

(defun open-markdown-file()
  (interactive)
  (eaf-open (buffer-name))
  )
(add-hook 'markdown-mode-hook 'open-markdown-file)

到这一步就可以预览了,但是只是在保存的时候才会预览。

配置实时预览

git clone https://github.com/manateelazycat/auto-save

;;eaf markdown 实时预览 begin
(load-file (expand-file-name "~/.emacs.d/site-lisp/auto-save-markdown.el"))
(require 'auto-save)
(auto-save-enable)

;;安静的保存
(setq auto-save-silent t)

;;保存时自动删除行尾的空格
(setq auto-save-delete-trailing-whitespace t)
;; 当前文件类型为GPG文件时,禁用自动保存模式。
(setq auto-save-disable-predicates
      '((lambda ()
      (string-suffix-p
      "gpg"
      (file-name-extension (buffer-name)) t))))
;;eaf markdown 实时预览 end

4.遇到的坑

<1>.第一个坑

将emacs-application-framework/app目录下每个的应用中buffer.py引用from core.*包的全部加入以下patch。

from PyQt6.QtGui import QColor
from PyQt6.QtWidgets import QPushButton

+ import sys
+ import os
+ CURRENT_DIR = os.path.split(os.path.abspath(__file__))[0]  # 当前目录
+ config_path = CURRENT_DIR.rsplit('/', 2)[0]  # 上2级目录
+ sys.path.append(config_path)

from core.buffer import Buffer
from core.utils import get_emacs_theme_foreground, get_emacs_theme_background, interactive

class AppBuffer(Buffer):
    def __init__(self, buffer_id, url, arguments):
        Buffer.__init__(self, buffer_id, url, arguments, True)

        self.add_widget(QPushButton("Hello, EAF hacker, it's working!!!"))
        self.buffer_widget.setStyleSheet("background: {}; color: {}; font-size: 100px;".format(self.theme_background_color, self.theme_foreground_color))

    @interactive
    def update_theme(self):
        super().update_theme()

        self.background_color = QColor(self.theme_background_color)
        self.buffer_widget.setStyleSheet("background-color: {};".format(self.theme_background_color))
        self.buffer_widget.setStyleSheet("background: {}; color: {}; font-size: 100px;".format(self.theme_background_color, self.theme_foreground_color))

        self.update()

5.调试经验

因为作者也没有添加什么log开关,只有一个crash开关,也没啥用,关键得知道到底缺什么库,因为EAF基本是使用python3.x开发,然后使用Elisp来调用,知道这个架构以后,我们可以做点什么,来探测到底哪里出问题了。

<1>.黑盒盲调分析

我的策略就是:
将app应用中的所有的buffer.py执行一边,就知道问题处在哪里了,然后缺什么装什么就行。
这招很管用,看论坛有的人调EAF,两三天都没啥结果,这个依赖太多,环境太复杂了。

应用中python调用路径

~/.emacs.d/site-lisp/emacs-application-framework/app/xxx/buffer.py

<2>.效果图

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Android系统攻城狮

你的鼓励将是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值