标签: elisp

更改 Emacs 字体颜色

我有点像 emacs 菜鸟。

tomorrow-night-bright-theme除了下面的荧光灯我完全满意

我讨厌那种颜色

我读过一些文章,解释了如何在 Emacs 中更改字体。

1. 在 emacs 中更改高亮线颜色
2. 更改 Emacs 语法高亮颜色

但是,我不知道与该颜色相关的符号是什么。

emacs themes elisp emacs-faces

1
推荐指数
1
解决办法
3350
查看次数

当宏观控制在elisp中流动时

whensubr.el获取的宏代码

(defmacro when (cond &rest body)
  (declare (indent 1) (debug t))
  (list 'if cond (cons 'progn body)))
Run Code Online (Sandbox Code Playgroud)

在这里,最后一种形式很复杂,

(list 'if cond (cons 'progn body))
Run Code Online (Sandbox Code Playgroud)

列表构建时,是否已经完成了评估condbody表单?为什么程序员list在一个地方和cons另一个地方使用?他们俩不是采取多种形式并制作清单吗?

(list 'if cond (.......))
(cons 'progn body)
Run Code Online (Sandbox Code Playgroud)

emacs elisp

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

尖锐的引号(#')与符号函数有何不同?

对我来说,这些运营商似乎做了同样的事情.两者都采用符号并返回与之关联的函数.有什么区别吗?

elisp 评估返回以下内容:

(defun foo(x)(+ 1 x))
foo
(foo 3)
4
#'foo

我也不明白.

常见的lisp和elisp有区别吗?我正在从中学习资源.

lisp elisp common-lisp sharp-quote

1
推荐指数
1
解决办法
462
查看次数

如何运行缓冲区的总和?

所以,从我的日志文件,我处理了一些字符串,最后得到了这个结果,让我们说缓冲区名称为" 1 "

12
23
34
45
Run Code Online (Sandbox Code Playgroud)

如何获得给定缓冲区的总和?

(defun sum-of-buffer (buf)
  (interactive "bBuffer Name: ")
   ....
  (message "%i" sum))
Run Code Online (Sandbox Code Playgroud)

还是有方便的功能组合?

emacs elisp

1
推荐指数
1
解决办法
108
查看次数

如何启用hl-line-mode来执行Dired?

我正在尝试仅为Dired模式启用hl-line-mode,但无法正常工作。启用global-hl-mode可以工作,但这是每个缓冲区,而不仅仅是我不想要的缓冲区。

(defun hl-mode-for-dired ()
  (setq hl-line-mode 1)
)

(add-hook 'dired-mode-hook 'hl-mode-for-dired)
Run Code Online (Sandbox Code Playgroud)

如果我尝试执行elisp,则会在emacs日志中收到此错误输出。另一个问题是为什么错误输出会像这样乱码?

hl-mode-for-dired diredp-nb-marked-in-mode-name #[nil "ÁÀ!ÂÃÄ!Ä " 
[font-lock-defaults make-local-variable (... t nil nil beginning-of-line) 
fboundp font-lock-refresh-defaults] 2] #[nil "ÆÇ\"    È=ÉÇÊ#ÆË\"$   
È=*ÉËÌ#)ÍÎÏÐÑ!QAA²AA² AA²ÉÒ Ó\"Ô#ÉÒÓ\"Õ#ÉÒÓ
\"Ö#," [dired-mode-map now bdjc bdj sep map lookup-key "J" 
undefined define-key bmkp-dired-jump "
" ...] 6] #[nil "ÁÀ!Â" [bookmark-make-record-function make-local-variable 
bmkp-make-dired-record] 2] dired-extra-startup)
Run Code Online (Sandbox Code Playgroud)

emacs elisp

1
推荐指数
1
解决办法
354
查看次数

Emacs Lisp 嵌套函数 - 无效变量错误

我想做一个计时器,像这样:

(defun dumb (y)
  (defun P () (print y))
  (run-with-timer 0 5 'P))

(dumb 5)
Run Code Online (Sandbox Code Playgroud)

然后 Emacs 给了我这个错误:

Error running timer `P': (void-variable y)
Run Code Online (Sandbox Code Playgroud)

我猜问题是在该(defun P () (print y))行中,变量y没有被评估,所以当我运行时(dumb 5),函数P尝试打印y未定义的,而不是文字5。但我不知道如何解决它。任何的想法?

elisp emacs24

1
推荐指数
1
解决办法
828
查看次数

在光标点生成一个随机的5个字母+数字字符串.(全部小写)

我正在使用Emacs 24.5(在Spacemacs内部).我希望能够生成一个随机的5个字符的字符串,无论我的光标在emacs内,只需按一个键,比如说F2.

典型的随机字符串将是jb2nx所有字母始终为小写字母.emacs启动时随机数生成的种子值应始终不同,以防止emacs在下次打开时生成相同的随机字符串序列.

注意:

我需要此功能,在点处插入一个唯一的单词,以将其用作书签.这样我可以打开包含Org-mode随机字符串的行,例如

[[file:some-code-file::jb2nx][This line in the code-file]] 
Run Code Online (Sandbox Code Playgroud)

将是我的Org文件中的一行.而jb2nx将被放置在代码文件中引用的行的注释内.

我不希望在:::之后直接引用行号,在编辑代码文件时行号可以更改.

emacs elisp

1
推荐指数
1
解决办法
887
查看次数

为什么这个全局变量只能设置两次,而不能再设置?

我试图在elisp中创建一个简单的解析器,我遇到了一个问题,我defvar是一个全局的,然后我将setq一个新值放入其中.这是第一次工作.然而,后来setq每次都失败了.

以下代码是问题的简化:

(defvar buf '(BUF))
(defvar head nil)

(defun pparse (seq)

  (defun status ()
    (princ (format "Parse: %40s || %-20s\n"
           (prin1-to-string seq) (prin1-to-string buf))))

  (while seq
    (status)
    (setq head (car seq))
    (setq seq (cdr seq))
    (cond ((equal "x" head)
       (nconc buf (list head)))
      ((equal "," head)
       (setq buf '(BUF))
       ;;(setcdr buf nil) <- fixes it but doesn't answer my question
      )))

  (status))

(pparse '("x" "," "x" "," "x" "," "x"))
Run Code Online (Sandbox Code Playgroud)

哪个产生这个输出:

Parse:            ("x" "," …
Run Code Online (Sandbox Code Playgroud)

lisp elisp emacs24

1
推荐指数
1
解决办法
94
查看次数

Emacs:尝试运行交互式函数时参数数量错误

我正在尝试创建一个命令,将所选区域缩进4个空格.

适当的命令是:C-u 4 C-x <TAB>,当Cu是"universal-argument"命令C-x <TAB>的快捷方式并且是快捷方式时indent-rigidly,所以我写了这个函数:

(defun my-tab ()
  (interactive)
  (universal-argument 4)
  (indent-rigidly))
Run Code Online (Sandbox Code Playgroud)

但是当我试图运行该函数时(带M-x my-tab)我收到此错误:

参数数量错误:(0.0),1

问题是什么?

谢谢!

lisp emacs elisp

1
推荐指数
1
解决办法
542
查看次数

有什么作用?意思是(插入“你好”?\s“世界”?\n)

函数 insert 的示例演示为:

(with-temp-buffer
  (insert "hello" ?\s "world" ?\n)
  (buffer-string))
Run Code Online (Sandbox Code Playgroud)

?这里是什么意思?

syntax emacs elisp character

1
推荐指数
1
解决办法
105
查看次数