小编Mir*_*lov的帖子

Emacs:在Tramp模式下禁用Ido完成

我经常使用ido进行自动完成,并通过ssh访问远程服务器.我.emacs包括以下几行:

(require 'tramp)
(setq tramp-default-method "ssh")
(ido-mode 1)
(setq ido-enable-flex-matching t)
(setq ido-everywhere t)
Run Code Online (Sandbox Code Playgroud)

当我浏览远程服务器的内容时​​,我想禁用Ido完成.请注意,变量ido-enable-tramp-completion与我的问题无关.考虑一下/root@site.com#1234:/var/www/file.txt.我需要Ido 不要在冒号(远程文件路径)之后扣除部分,我不关心冒号之前的部分.我使用ssh,每次运行ido-find-file时Ido使Emacs滞后几秒钟,当ssh超时结束时,Tramp尝试重新连接,请求我输入密码等等.这种行为是不可取的.

Emacs版本 - 24.0.94.1

编辑(20.03.12):与Ido作者联系后,我尝试将其更改ido-file-name-all-completions-1为以下内容:

(defun ido-file-name-all-completions-1 (dir)
  (cond
   ((ido-nonreadable-directory-p dir) '())
   ;; do not check (ido-directory-too-big-p dir) here.
   ;; Caller must have done that if necessary.

   ((and ido-enable-tramp-completion
     (or (fboundp 'tramp-completion-mode-p)
         (require 'tramp nil t))
     (string-match "\\`/[^/]+[:@]\\'" dir))
    ;; TRAMP RELATED CODE DELETED
    nil)
   (t
    (file-name-all-completions "" dir))))
Run Code Online (Sandbox Code Playgroud)

没有成功.然后我改变了正则表达式

"\\`/[^/]+[:@]"
Run Code Online (Sandbox Code Playgroud)

并且它工作 - …

emacs elisp tramp ido

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

组织模式:嵌入信息文件的链接

我在org-mode中维护日记(内部博客包含要记住的想法),有时候,当我研究Emacs时,我会通过引用信息文件存储学到的技巧和技巧.

目前我做以下事情.我打开所需的信息文件,按下c复制当前节点名称,按< s TAB- 这是一个简单的模板,可以展开到src-block中.然后我添加lisp表达式并粘贴节点名称,最后链接如下所示:

#+begin_src emacs-lisp
(info "(org) Properties and Columns")
#+end_src
Run Code Online (Sandbox Code Playgroud)

当我需要查看信息文件时,我将光标放在lisp sexp之后并按C-x C-e(eval-last-sexp).

这个过程繁琐乏味.在org-mode中嵌入信息文件链接的最佳方法是什么?

编辑:我已经找到了如何添加到信息节点的链接.外部链接上的组织模式手册使用链接描述了这些等效方法:

[[info:org#Tags]]
[[elisp:(info "(org) Tags")]]
Run Code Online (Sandbox Code Playgroud)

与第一方案我不知道如何自动变换(org) Tagsorg#Tags.我该如何进一步简化这一过程?

emacs elisp org-mode

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

学习一个Lisp有助于学习另一个吗?

学习不同的Lisp语言之间是否有任何协同作用?我正在学习Emacs Lisp,因为它在我的日常Emacs使用中立即有用,但是我对所有Lisps着迷,所以也许有一天我会学习和使用其他人.当我开始挖掘Common Lisp,Scheme或Clojure时,学习Emacs Lisp会帮助我吗?换句话说,对我来说,学习一门全新的语言,或者某些概念和范例是否常见?我也有兴趣比较Lisps之间的独特差异,这将是一个问题,当我从一个Lisp到另一个.

如何学习Common Lisp和Emacs Lisp?有人提到会有"浪费",但没有详细说明,程度如何.

lisp scheme elisp clojure common-lisp

9
推荐指数
2
解决办法
773
查看次数

如何在Emacs中运行Racket?

我不喜欢DrRacket,因为它没有像Emacs那样方便的编辑功能,但是我只能通过添加命令"racket current-file.scm" .emacs来运行Scheme文件,现在,我想在Emacs中运行Scheme文件描述为"运行:重置交互窗口并在定义窗口中运行程序." 在DrRacket的手册中,我读到了Racket的帮助" 19.1运行球拍和球拍 ",似乎它没有回答我的问题,我该怎么办?

emacs racket

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

Elisp中的高阶函数

我创建了一个在Elisp中返回函数的函数:

(defun singleton-set (elem)
  (defun f (n) (= n elem))
  f)
Run Code Online (Sandbox Code Playgroud)

我尝试在IELM中运行它,它失败了:

ELISP> (singleton-set 5)
*** Eval error ***  Symbol's value as variable is void: f
ELISP> ((singleton-set 5) 5)
*** Eval error ***  Invalid function: (singleton-set 5)
Run Code Online (Sandbox Code Playgroud)

由于Lisp-1和Lisp-2有什么区别?我将代码更改为

(defun singleton-set (elem)
  (defun f (n) (= n elem))
  #'f)
Run Code Online (Sandbox Code Playgroud)

并调用(funcall (singleton-set 5) 5),但现在错误是

*** Eval error *** Symbol's value as variable is void: elem

我从elisp了解到:从内部函数捕获变量,这是由于Emacs Lisp的动态绑定.

如何在Emacs Lisp中使函数返回函数?这种机制与Python,Scala或Clojure等其他语言有什么不同?

相关问题:

emacs elisp dynamic-binding higher-order-functions

9
推荐指数
2
解决办法
1317
查看次数

使用python棒来绘制灰度图像

我想使用ImageMagick http://wand-py.org的Python API绑定来直接操作图像.但是,我无法从文档中推断出如何使用灰度转换.任何人都可以提供有关此问题的信息吗?

from wand.image import Image
try:
  with Image(file=path) as img:
    img.grayscale() # PSEUDOCODE for my given problem
except:
  pass
Run Code Online (Sandbox Code Playgroud)

python imagemagick magickwand grayscale wand

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

自定义Elisp plist缩进

我不喜欢Elisp中的plists是如何缩进的.

;; current   desired   Python (for comparison)
;; '(a 1     '(a 1     {'a': 1,
;;     b 2     b 2      'b': 2,
;;     c 3)    c 3)     'c': 3}
Run Code Online (Sandbox Code Playgroud)

试过M-x emacs-version24.3.1,跑了emacs -Q,输入了plist并按下了C-x h C-M-\.

当它不是列表时,这个缩进是有意义的:

(mapcar (lambda (x) (x + 1))
        '(1 2 3 4))
Run Code Online (Sandbox Code Playgroud)

如何更改格式设置,以便只有plists(或者,如果不可能,所有引用列表)具有所需的矩形缩进,但其他所有内容的缩进保持不变?我需要将其存储在本地.el文件中,这样当我编辑此文件时,它会根据需要缩进,但此行为不会在其他任何地方结束.

emacs elisp indentation property-list

9
推荐指数
2
解决办法
560
查看次数

检查字符串是否以Emacs Lisp中的后缀结尾

是否有一个函数检查字符串是否以某个子字符串结尾?Python有endswith:

>>> "victory".endswith("tory")
True
Run Code Online (Sandbox Code Playgroud)

string emacs elisp substring string-matching

9
推荐指数
2
解决办法
2536
查看次数

使用Lisp进行高阶编程:将函数传递给mapcar?

我只是在学习ANSI Common Lisp(在Win32机器上使用clisp),我想知道mapcar是否可以使用传入的函数作为正式参数?请参阅以下内容:

(defun foo (fn seq) 
    (mapcar #'fn seq))
Run Code Online (Sandbox Code Playgroud)

在我看来,这将提供比以下更大的灵活性:

(defun mult (i)
    (* i 2))

(defun foo ()
    (mapcar #'mult '(1 2 3)))
Run Code Online (Sandbox Code Playgroud)

lisp common-lisp

8
推荐指数
2
解决办法
4070
查看次数

如何在android中使org-mobile工作?

我想在我的Android手机中查看和编辑我的组织文件,我将文件与Ubuntu同步.我添加了这样的代码.emacs

(setq org-mobile-directory "~/Documents")
Run Code Online (Sandbox Code Playgroud)

并且我还设置组织移动目录~/Documents在组织移动集团.但我不能将任何组织文件推送到我的手机.当我在Emacs中打开一个组织文件时C-c-x RET p,Emacs会显示此消息.

Please set 'org-direcory' to the directory where your org files live
Run Code Online (Sandbox Code Playgroud)

我不知道为什么在我做了这样的设置之后,Emacs仍然给了我这个消息.

我在手机上所能做的只是捕捉一个新的音符,我输入的东西,它们可以与我的电脑同步~/Ubuntu One/mobileorg.org.但我无法阅读我装入手机的内容.

我在网上看到:同步,我发现我在我的目录中找不到这三个文件:checksum.dat,index.org和agendas.org.

我需要在手机中查看组织文件,并将组织文件推送到手机中?

android org-mode

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