我经常使用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)
并且它工作 - …
我在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) Tags在org#Tags.我该如何进一步简化这一过程?
学习不同的Lisp语言之间是否有任何协同作用?我正在学习Emacs Lisp,因为它在我的日常Emacs使用中立即有用,但是我对所有Lisps着迷,所以也许有一天我会学习和使用其他人.当我开始挖掘Common Lisp,Scheme或Clojure时,学习Emacs Lisp会帮助我吗?换句话说,对我来说,学习一门全新的语言,或者某些概念和范例是否常见?我也有兴趣比较Lisps之间的独特差异,这将是一个问题,当我从一个Lisp到另一个.
在如何学习Common Lisp和Emacs Lisp?有人提到会有"浪费",但没有详细说明,程度如何.
我不喜欢DrRacket,因为它没有像Emacs那样方便的编辑功能,但是我只能通过添加命令"racket current-file.scm" .emacs来运行Scheme文件,现在,我想在Emacs中运行Scheme文件描述为"运行:重置交互窗口并在定义窗口中运行程序." 在DrRacket的手册中,我读到了Racket的帮助" 19.1运行球拍和球拍 ",似乎它没有回答我的问题,我该怎么办?
我创建了一个在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等其他语言有什么不同?
相关问题:
我想使用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) 我不喜欢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文件中,这样当我编辑此文件时,它会根据需要缩进,但此行为不会在其他任何地方结束.
是否有一个函数检查字符串是否以某个子字符串结尾?Python有endswith:
>>> "victory".endswith("tory")
True
Run Code Online (Sandbox Code Playgroud) 我只是在学习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) 我想在我的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.
我需要在手机中查看组织文件,并将组织文件推送到手机中?
elisp ×6
emacs ×6
common-lisp ×2
lisp ×2
org-mode ×2
android ×1
clojure ×1
grayscale ×1
ido ×1
imagemagick ×1
indentation ×1
magickwand ×1
python ×1
racket ×1
scheme ×1
string ×1
substring ×1
tramp ×1
wand ×1