标签: elisp

在Emacs缓冲区中渲染Markdown

是否可以使用Emacs自己的缓冲区文本格式化功能在Emacs缓冲区中呈现Markdown?图形环境中的Emacs具有丰富的文本显示功能(字体样式,颜色,链接甚至图像),因此它应该是非常可能的.有没有现有的实施?

请注意,我们的想法是将呈现的Markdown设置为本机Emacs格式的文本,可以像在Emacs中的任何其他文本一样进行导航和操作.因此,这里不希望呈现嵌入在Emacs缓冲区中的图像的解决方案.

另请注意,这不是用于编辑 Markdown 的模式,而是用于在Emacs缓冲区中呈现呈现的Markdown.它最好是一个纯Emacs Lisp解决方案,便于携带.

emacs markdown elisp

47
推荐指数
4
解决办法
1万
查看次数

对Emacs自定义系统感到困惑

有几个类似的设置功能:

  1. set&setq
  2. 默认设置
  3. defcustom
  4. 自定义设定值
  5. 自定义设置变量
  6. 自定义设定值
  7. 自定义设置的变量

那么,这些功能之间的区别是什么?

如果我想将自己的首选项设置为加载项,请针对以下情况:

  1. 如果通过defcustom设置变量,哪个设置功能会更好?
  2. 那么defvar的变量设置怎么样?

emacs elisp

47
推荐指数
3
解决办法
4000
查看次数

emacs list-buffers行为

在GNU emacs中,每当我点击Ctrl-x Ctrl-b查看所有缓冲区时,窗口将被拆分以显示缓冲区列表,或者如果我的窗口已经拆分为2(例如,我将在下部窗口中运行一个shell) ,缓冲区列表出现在另一个窗口中.

我想要的行为是缓冲区列表出现在我的活动窗口中,这样我就可以选择我想要的缓冲区并继续在同一个窗口中工作,而不必去Ctrl-x Ctrl-o另一个缓冲区,选择缓冲区(带enter)并编辑在另一个窗口缓冲...我用Google搜索但它似乎不是一个普遍的愿望?我想知道是否有人有elispy(或其他)解决方案?

emacs elisp

46
推荐指数
5
解决办法
9434
查看次数

如何模块化emacs配置?

我决定从头开始重写我的.emacs,我想设置一些模块化的东西,以避免一个可怕的1k + LoC init.el文件......

我认为每个配置都需要解决一些基本问题:

  • 全球选择
  • 编辑功能
  • 导航(帧和缓冲区)
  • 键绑定
  • 模式自定义

虽然我仍然想要通过结构,我正在寻找一些如何实现这一点的指针.
我在github等上看了一些.emacs,似乎有不同的方法,没有首选的方法,这有点令人困惑.
我有兴趣阅读有关如何构建这样的设置的一些想法,特别是一些相关的elisp代码.


编辑:已经赶上了事情,并没有太多时间玩这个.将在几天内尝试提出的方法,并看看什么是最好的,同时感谢所有的建议!


edit2:我一直在使用带有org-mode文字初始化文件,这绝对太棒了!
我还没有设置一个特定的加载机制,我一直在使用这个代码,递归加载我的elisp目录,然后要求或任何设置说明说.

  (if (fboundp 'normal-top-level-add-subdirs-to-load-path)
  (let* ((my-lisp-dir "~/.emacs.d/elisp/")
  (default-directory my-lisp-dir))
  (setq load-path (cons my-lisp-dir load-path))
  (normal-top-level-add-subdirs-to-load-path)))
Run Code Online (Sandbox Code Playgroud)

我仍然需要对此进行修改,可能使用自动加载,以及一些字节重新编译,如果修改了技巧; 我很乐意听到有关这方面的建议.

emacs configuration elisp

45
推荐指数
3
解决办法
1万
查看次数

分析行为不端的Emacs Lisp的提示?

我经常自定义Emacs.最近,我在我的.emacs配置中添加了一些内容,偶尔会将我的CPU固定在100%,但我真的不知道它是什么.

如果我多次按下Cg,最终我会在迷你缓冲区下方收到一条消息,询问我是否要自动保存我的文件,然后如果我想完全中止emacs.如果我一直拒绝并按下Cg,最终我可以恢复正常运行emacs.大约一个小时后它会再次发生.

我可以继续像我一样,评论我最近添加的各种内容,重新启动emacs,试图缩小罪魁祸首,但它进展缓慢.

有没有办法可以直接分析emacs来找出什么lisp函数占用CPU?

emacs profiling elisp dot-emacs

44
推荐指数
4
解决办法
4654
查看次数

如何将我的自定义emacs主题视为"安全主题"?

我是Emacs的新手.

所以,我正在使用emacs 24和曝光的色彩主题.

当Emacs启动时,它提示我"加载一个主题可以运行Lisp代码,真的加载吗?".

当我回答"是"时,它会继续"在未来的会议中将此主题视为安全吗?".

如果我说"y",主题就会被加载,并且

(custom-set-variables
    (custome-safe-themes (quote ("..." default))))
Run Code Online (Sandbox Code Playgroud)

自动添加到〜/ .emacs.

但是,每次打开Emacs时,这些问题都会回来!

什么是关闭它们的正确方法?

emacs customization themes elisp editor

44
推荐指数
2
解决办法
1万
查看次数

如何在启动时最大化Windows上的Emacs?

这让我发疯了:我只是想让Emacs最大化到启动时的屏幕分辨率.理想情况下,我喜欢适用于任何屏幕分辨率的跨平台(Windows和Linux)解决方案,但我甚至无法使用甚至硬编码大小的Window XP.

这是我尝试过的:

  1. 设置具有适当高度/宽度的初始帧alist
  2. 设置default-frame-alist
  3. (Windows特定的东西)向emacs窗口发送消息,告诉它最大化via (w32-send-sys-command 61488)
  4. 尝试了我在某处发现的这个功能:

    (defun toggle-fullscreen ()
      "toggles whether the currently selected frame consumes the entire display
    or is decorated with a window border"
      (interactive)
      (let ((f (selected-frame)))
        (modify-frame-parameters 
         f
         `((fullscreen . ,(if (eq nil (frame-parameter f 'fullscreen)) 
                              'fullboth
                            nil))))))
    
    Run Code Online (Sandbox Code Playgroud)
  5. 在我的init文件的开头和结尾尝试了上述方法,试图消除其他init事件的干扰.

不幸的是,以上都没有!对于上面的一些,我可以看到我的emacs窗口在一瞬间正确调整大小,然后恢复到较小的默认大小.如果我在初始化后运行上面的方法,emacs窗口会正确调整大小.世界上到底发生了什么?

[ps还有其他SO问题,但没有一个答案有效]


更新:

答案让我觉得我的init文件中的其他东西导致了问题.确实是这样!经过一些尝试和错误,我找到了罪魁祸首.如果我注释掉以下行,一切都很完美:

(tool-bar-mode -1)
Run Code Online (Sandbox Code Playgroud)

工具栏与最大化窗口有什么关系?

所以现在的问题是:如何禁用工具栏(毕竟,emacs的工具栏很丑陋,占用了宝贵的屏幕空间)并且在我的init文件中最大化了窗口?可能是工具栏干扰窗口大小的错误?

澄清:(工具栏模式-1)关闭工具栏,但此行干扰最大化Emacs窗口.因此,如果我尝试将函数放到最大化窗口并关闭工具栏,则最大化部分将失败; 如果工具栏部分已注释掉,则最大化部分将正常工作.它甚至不重要我使用什么解决方案(在我列出的4个中).


解决方案:(或者至少现在对我有用)

这可能是Emacs中的一个错误.解决方法是通过注册表禁用工具栏,而不是.emacs.将以下内容另存为.reg文件,并在Windows资源管理器中执行该文件:

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\GNU\Emacs]
"Emacs.Toolbar"="-1"
Run Code Online (Sandbox Code Playgroud)

(此解决方案是OtherMichael建议的工作版本).

emacs elisp

42
推荐指数
5
解决办法
1万
查看次数

Emacs评论/取消注释当前行

我知道已经有一个关于这个问题的Emacs问题,并且关闭了,但我发现它非常重要且非常重要.

基本上,我想评论/取消注释当前行.我期望用宏可以很容易,但我发现它确实不是.

如果当前行已注释,请取消注释.如果取消注释,请对其进行评论.而且我还要评论整条线,而不仅仅是光标位置.

我试过像这样的宏:

C-a

'comment-dwim
Run Code Online (Sandbox Code Playgroud)

但这只是评论一条线,而不是取消注释它,如果它已经评论过.

我不确定它有多容易,但如果有某种方式,我真的很喜欢它.

另外,我非常喜欢这个想法的原因是,当我使用Geany时,我只是使用C-e它并且它是完美的.

emacs elisp

42
推荐指数
3
解决办法
1万
查看次数

绑定键以增加/减少emacs中的字体大小

在我的终端(我有终结器)我可以使用组合键Ctrl +Ctrl -增加/减少字体大小.

在emacs中,我可以执行以下操作来设置font-height:

(set-face-attribute 'default nil :height 70)
Run Code Online (Sandbox Code Playgroud)

但我不知道如何增加/减少它.我怎样才能轻松将其添加到我的emacs配置中?

emacs elisp font-size

42
推荐指数
5
解决办法
1万
查看次数

elisp regexp搜索字符串,而不是缓冲区

我一直在emacs lisp文档中搜索如何将正则表达式搜索到字符串中.我找到的只是如何在缓冲区中执行此操作.

有什么我想念的吗?我应该将我的字符串吐入临时缓冲区并在那里搜索它吗?这只是elisp的编码风格,我会习惯吗?有没有这个问题的标准解决方案.当我应该能够直接搜索已经存在的变量时,操作缓冲区似乎很复杂.

regex string emacs buffer elisp

41
推荐指数
2
解决办法
1万
查看次数