小编ele*_*kil的帖子

mu4e不会在INBOX中列出所有消息

我已经安装并配置了它,mumu4e按照手册中的说明进行了解释(emacs 24.3.1的最新版本)。我的mu4e配置包含:

(setq mu4e-maildir "~/Maildir/mail_user_de")

(setq mu4e-drafts-folder "/Drafts")
(setq mu4e-sent-folder   "/Sent")
(setq mu4e-trash-folder  "/Trash")
Run Code Online (Sandbox Code Playgroud)

这些文件夹存在,每个包含三个子文件夹:curnewtmp。当我启动mu4e时说:

[mu4e]在商店中以4023条消息开始了mu4e

但是,当我进入INBOX文件夹时,没有列出邮件。另一方面,当我输入最近7天的书签时,将列出最近7天的所有电子邮件。

我的假设是,这mu4e不适用于从emacs 外部下载的电子邮件,因为

  1. 当我更新(呼叫offlineimapmu index)时mu4e,电子邮件中的邮件会正确分类到INBOX
  2. 当我 emacs 外部进行更新时,这些邮件会在书签中列出,但不会在中列出,INBOX直到将它们标记为已在之外mu4e阅读。如果发生这种情况,mu4e它们将不会出现在中INBOX,否则它们将突然出现在(标记为已读)中INBOX

显然我不喜欢这样。我希望所有邮件(无论是从内部下载mu4e还是直接在终端中下载)都显示在中INBOX。这是错误还是功能(我希望可以将其禁用)?

email emacs mu

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

强制 AUCTeX 解析整个文档

我正在使用AUCTeX 11.87withemacs 24.3来编写我的LaTeX文档。这很好用,但有一个例外:解析。

我的文档结构如下:

./
大师.tex
Chapter_1.tex
Chapter_2.tex
...
标题/
标题/标题.tex
标头/packages.tex
标题/选项.tex
...

其中Master.tex \inputsheader.tex又将所有文件输入到header/. 此外Master.tex还包括环境中的Chapter_N.tex文件document

问题来了:AUCTeX 在auto我实际打开文件之前不会生成解析文件(文件夹中的文件)。这意味着直到我还没有打开和保存header/packages.texheader/header.tex文件 AUCTeX 不知道加载的包,因此他们的命令/环境。

现在的问题是:我可以强制 AUCTeX(重新)解析整个源代码树(然后重新加载所有打开文档的样式挂钩)吗?

emacs elisp auctex

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

多个"交互式"选项

我编写了一个小函数来使用逗号作为项目分隔符来反转标记区域中的项目.功能代码是:

(defun reverse-list (beg end)
  "Reverses a list in-place, where comma ',' is the list item separator."
  (interactive "r")
  (if (region-active-p)
    (let ((region-list (reverse (split-string (region-as-string) ","))))
      (kill-region beg end)
      (loop for s in region-list do (progn
                                      (insert (chomp s))
                                      (insert ", ")))
      (delete-char -2))
    (message "Error: No region selected!")))  
Run Code Online (Sandbox Code Playgroud)

其中chompstrip从字符串中前导/尾随空格并将region-as-string该区域作为字符串生成.

该功能非常有用,但是能够动态选择分隔符会很棒.我正在寻找的行为是:

  • 如果没有通用参数调用,则使用逗号作为项分隔符
  • 如果使用universal argument(C-u)调用,则要求用户输入一个(可能是多个char)分隔符字符串

我试图实现这一目标,但没有成功.如果你能提供帮助,那就太棒了!

提前谢谢,
elemakil

emacs elisp

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

magit-grep,如何包含或排除文件扩展名?

我想给magit-grep提供一些选择

使用选项foo结果运行它

git --no-pager grep -n foo
Run Code Online (Sandbox Code Playgroud)

我想给它一些选择

git --no-pager grep -n foo (options to include *.html and exclude *.py, etc)
Run Code Online (Sandbox Code Playgroud)

它不一定是magit-grep,emacs中最好的git grep解决方案是什么?


magit-的grep

(magit-define-command grep (&optional pattern)
  (interactive)
  (let ((pattern (or pattern
                     (read-string "git grep: "
                                  (shell-quote-argument (grep-tag-default))))))
    (with-current-buffer (generate-new-buffer "*Magit Grep*")
      (let ((default-directory (magit-get-top-dir)))
        (insert magit-git-executable " "
                (mapconcat 'identity magit-git-standard-options " ")
                " grep -n "
                (shell-quote-argument pattern) "\n\n")
        (magit-git-insert (list "grep" "--line-number" pattern))
        (grep-mode)
        (pop-to-buffer (current-buffer))))))
Run Code Online (Sandbox Code Playgroud)

git emacs grep magit

4
推荐指数
2
解决办法
2368
查看次数

告诉 ido 忽略所有星形缓冲区,除了一些

通常我想ido忽略所有非用户缓冲区,即所有以*. 我使用以下设置实现了这一点:

(setq ido-ignore-buffers '("\\` " "^\*"))
Run Code Online (Sandbox Code Playgroud)

然而,这在使用 shell 或解释器时会产生问题,例如ielm,交互缓冲区被命名为*ielm*。显然,手动添加要忽略的所有缓冲区并不是一个真正的选择,因为加载了许多不同的 emacs 包后,列表可能会变得很长。我知道C-a哪个从内部禁用了忽略模式ido,但是,我不想C-a每次切换到ielm缓冲区时都点击。

我的问题是:

有一些变量,它允许指定IDO应该缓冲区不能忽略(虽然它们匹配的正常忽略列表)?或者有没有其他方法可以解决这个问题?

emacs buffer ido

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

传递constexpr对象

我决定给出一个旋转的新C++14定义,constexpr为了充分利用它,我决定编写一个小编译时字符串解析器.但是,我正在努力保持我的对象一段constexpr时间传递给一个函数.请考虑以下代码:

#include <cstddef>
#include <stdexcept>

class str_const {
    const char * const p_;
    const std::size_t sz_;
public:
    template <std::size_t N>
    constexpr str_const( const char( & a )[ N ] )
    : p_( a ), sz_( N - 1 ) {}
    constexpr char operator[]( std::size_t n ) const {
        return n < sz_ ? p_[ n ] : throw std::out_of_range( "" );
    }
    constexpr std::size_t size() const { return sz_; }
};

constexpr long int …
Run Code Online (Sandbox Code Playgroud)

c++ constexpr c++14

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

通过参数列表移动

我使用由一个安装一个C++程序员cc-modeCEDET,当然还有我们敬爱的emacs(v24.2).

我缺少的一个功能是一个通过参数列表快速移动点的函数.考虑这个例子:

void takesManyArgs( int a1, int a2, int a3, std::pair<int,int> a4, int a5 ){  
    // does something nifty!  
}  
// [...]
takesManyArgs( b1, b2, b3, make_pair( b4, b5 ), b6 );
Run Code Online (Sandbox Code Playgroud)

点在第一个之前int.现在我想以一种简单的方法快速浏览参数列表,即在第一个非空格字符超过逗号(参数分隔符)之前移动的forward-argument(和backward-argumentaswell)函数.
我已经编写了一个小功能,但它不是我喜欢它的工作方式:

(defun arg-forward ()  
  "Move point forward in the file until we hit an argument separator, i.e. comma, colon or semicolon."  
  (interactive)  
  (progn  
    (re-search-forward "[,]")))  
Run Code Online (Sandbox Code Playgroud)

原则上这个函数只是跳转到下一个逗号.那不是我想要的行为.

我想要一个功能:

  • 编辑:跳转到下一个参数分隔符(即C++的逗号)并在该参数分隔符后面放置点
  • 检查逗号后面是否有空格; 万一有一个点移动到第一个非空白字符(即,而不是,| int它看起来像, |int这里 …

emacs elisp cc-mode

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

一个`query-replace`,它要求每次出现一个新的替换字符串

我正在寻找一个类似的功能,query-replace但不是一遍又一遍地使用相同的替换字符串,每次找到匹配时都要求替换字符串.也就是说,一旦找到匹配,您可以跳过此匹配或进入替换模式,您可以在其中指定要用于替换匹配的字符串(具有先前替换的历史记录).

更有用的是query-replace-regexp变体,它允许使用搜索字符串的分组.

我已经编写了一些代码用于非正则表达式版本,但是,我已经停留在实际替换某些内容的部分,并在替换完成后重复整个搜索/跳过匹配.到目前为止的代码是:

(defun query-replace-ask (search)
  (interactive "sQuery replace: ")
  (if (search-forward search nil t)
      (let ((beg (match-beginning 0))
            (end (match-end 0))
            (if (y-or-n-p "Replace?")
                (replacement (read-string "Replacement: "))
              (
               ;; Do the next search
               )))
        ;; Replace from beg to end with replacement
        ;; do the next search
        )))
Run Code Online (Sandbox Code Playgroud)

此外,如果函数完成后函数可以输出总替换次数,那将是很好的.

emacs elisp

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

在Emacs + AUCtex下一次性命令编织和latexmk

我想使用一个AUCtex命令编织AND latexmk Knitr文档.我不知道如何在lisp中编码,而网络搜索没有发现这样的事情.

我有一些接近的东西.需要为latexmk更改文件的扩展名.任何帮助将不胜感激.

以下行是我的.emacs文件.

(add-hook 'LaTeX-mode-hook (lambda () (push '
  ("KnitrLaTeX" "Rscript -e \"library(knitr)\; knit('%s')\" && latexmk -pdf %s" 
   TeX-run-TeX nil t :help "Run knitr and latexmk on file") 
   TeX-command-list)))
Run Code Online (Sandbox Code Playgroud)

当我运行时C-c C-c (KnitrLaTeX),emacs运行以下命令:

Running `KnitrLaTeX' on `slides.Rnw' with ``Rscript -e "library(knitr); knit('slides.Rnw')" && latexmk -pdf slides.Rnw''
Run Code Online (Sandbox Code Playgroud)

哪个错了.它应该读"... && latexmk -pdf slides.tex"

提前致谢.

emacs auctex latexmk knitr

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

Dired:重复文件(操作,而不是如何摆脱'em)

有时我想创建一些文件(比如配置文件)的副本,这些文件最初应该与初始文件具有相同的内容.因此,我希望能够在dired中标记一些文件并"复制"它们,这种复制过程可能类似于大多数文件管理器使用的复制过程,当粘贴到原始目录时:复制的文件名得到" (复制)"附加(在文件扩展名之前).

我似乎无法找到这样做的内置dired函数,也许有人可以帮助/已经创建了这样的函数?

非常感谢帮助!

emacs dired

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

无法安装需要组织的Melpa软件包

我的package.el配置如下所示:

(defvar gnu '("gnu" . "http://elpa.gnu.org/packages/"))
(defvar melpa '("melpa" . "http://melpa.milkbox.net/packages/"))
(defvar org-elpa '("org-elpa" . "http://orgmode.org/elpa/"))


(add-to-list 'package-archives gnu t)
(add-to-list 'package-archives melpa t)
(add-to-list 'package-archives org-elpa t)

(defvar el/installed-packages
  (list
   (list 'org org-elpa)
   (list 'org-plus-contrib org-elpa)
   (list 'orgbox melpa)
  )
"List of packages to be installed")

(package-initialize)

(unless (and (file-exists-p "~/.emacs.d/elpa/archives/gnu")
             (file-exists-p "~/.emacs.d/elpa/archives/org-elpa")
             (file-exists-p "~/.emacs.d/elpa/archives/melpa"))
  (package-refresh-contents))

(defun el/packages-install (packages)
  (mapc (lambda (pkg)
          (let ((name (nth 0 pkg))
                (repo (nth 1 pkg)))
            (when (not (package-installed-p name))
              (message "Downloading …
Run Code Online (Sandbox Code Playgroud)

emacs

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

Aquamacs + slime:在启动时加载lisp文件

我正在运行Aquamacs + Slime,当我启动Aquamacs时,我可以自动启动Slime.但是,当我尝试加载lisp文件后,我会不断收到各种错误,具体取决于我是如何尝试加载文件的.这是我的偏好.el

(setq inferior-lisp-program "~/ccl/dx86cl64"
  slime-startup-animation nil)
(require 'slime)
(split-window-horizontally)
(other-window 1)
(slime)
(eval-after-load "slime"
   '(progn 
       (slime-compile-and-load-file "/Users/xxxxx/xxxxx/load-seq.lisp")
 )) 
Run Code Online (Sandbox Code Playgroud)

我收到以下错误

error: Buffer *inferior-lisp* is not associated with a file.
Run Code Online (Sandbox Code Playgroud)

我尝试了其他功能,包括load compile-and-loadslime-load-file分别得到以下错误......

Invalid read syntax: #
Symbol's function definition is void: compile-and-load
error: Not connected.
Run Code Online (Sandbox Code Playgroud)

当我(load "/Users/xxxxx/xxxxx/load-seq.lisp")使用粘液REPL 时,lisp文件加载(并编译)很好.看起来当我把它放在Preferences.el中时,即使我正在使用它也不会等待粘液加载eval-after-load.

emacs aquamacs slime

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

标签 统计

emacs ×11

elisp ×4

auctex ×2

aquamacs ×1

buffer ×1

c++ ×1

c++14 ×1

cc-mode ×1

constexpr ×1

dired ×1

email ×1

git ×1

grep ×1

ido ×1

knitr ×1

latexmk ×1

magit ×1

mu ×1

slime ×1