由于某种原因,我的shell脚本模式挂钩不会被执行.我的.emacs中的示例:
(add-hook 'shell-script-mode-hook (lambda ()
(rainbow-delimiters-mode 1)))
导致设置变量,但未为打开的脚本文件加载模式.在这里挂钩的正确方法是什么?
我使用默认的shell脚本模式(例如,modeline说Shell-script[bash]).我是否必须单独挂钩每个shell类型(sh,bash,zsh)?如果是的话,请告诉我怎么样?
非常感谢你!
EDIT3:
结果是由于textmate模式与sh-mode中的骨架对插入冲突(我试图通过在sh模式中禁用textmate来避免冲突,然后在sh-mode中留下了sh-mood-hook aparatus我完全删除了textmate模式,现在使用标准的骨架对approch globaly.
我会接受phils回答 - 没有他,我可能无法自己调试.
EDIT2:
感谢phils,我认为他的评论让我们更接近解决方案.然而,彩虹分隔符并不是问题.我删除了除你的hello消息之外的所有sh-mode-hook并重新启动Emacs.当我打开.sh文件时,我得到了这个:
为shell类型bash设置缩进设置缩进内容缩进变量现在是本地的.shell类型bash的缩进设置文件模式规范错误:(void-function nil)
注意没有"你好"的消息.sh-mode-hook的值是:
(nil
(lambda nil
(message "hello")))
我认为这个问题是第一个零值 - 尽管我没有看到它会被设置在任何地方.
如果我评价这个:
(setq sh-mode-hook t)
(add-hook 'sh-mode-hook (lambda () (message "hello")))
我看到了hello消息,但是在重新启动之后(我将这些行放在.emacs中)它再次消失(nil再次位于挂钩之上).
知道怎么做才能在安装时有活动的钩子吗?
编辑1:我也尝试过:
(add-hook 'sh-mode-hook (lambda ()
(rainbow-delimiters-mode 1)))
同样的负面结果 - 不确定这是否相关虽然......
今天我不得不将真实(死树)信件中的银行帐号复制到Emacs缓冲区,然后通过电子邮件发送.我把它从信件复制到Emacs缓冲区时忘记了一个错误(忘了一个数字).这导致一位来自同事的电子邮件告诉我:"无法付款,伪造IBAN".
创建一个函数/次模式有多难:
检测看起来像IBAN的"东西"(例如两个大写字母后面跟着'x'和'y'数字,忽略空格等.那里有现成的正则表达式,可以验证是否有类似IBAN的东西或不)
如果它看起来无效,则运行mod 97并以红色突出显示IBAN
理想情况下,我需要一个次要模式,我可以打开几种类型的缓冲区(愚蠢的文本文件,但也电子邮件等).
使用Emacs做什么的"方法"是什么?
我有这款"老式"联想A2107平板电脑,这是我多年前的根源(使用http://androidforums.com/threads/a2107-root-mods-and-rom-discussion.661261/下载,运行其root.bat从我的GNU/Linux机器手动编写脚本)并且工作正常.
然后我将这款平板电脑传递给了我的女儿几年,现在我把它拿回来了.
/ system/bin/su仍然存在,仍然是相同的日期和大小,仍然模式"rwsr-sr-x",仍然是相同的固件(Android 4.0.3)所以看起来都很好,但是当我尝试从它运行它一个shell,它只是告诉我"Permission denied".
知道可能会发生什么吗?我可以尝试做些什么来追踪它?
2017-03-16 16:09:08.821 INFO 9104 --- [ main] com.hello.EurekaClientApplication : No active profile set, falling back to default profiles: default 2017-03-16 16:09:08.848 INFO 9104 --- [ main] ationConfigEmbeddedWebApplicationContext : Refreshing org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext@5dcd8c7a: startup date [Thu Mar 16 16:09:08 CDT 2017]; parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@441772e 2017-03-16 16:09:09.873 INFO 9104 --- [ main] o.s.b.f.s.DefaultListableBeanFactory : Overriding bean definition for bean 'hystrixFeature' with a different definition: replacing [Root bean: class [null]; scope=; abstract=false; lazyInit=false; autowireMode=3; dependencyCheck=0; autowireCandidate=true; primary=false; factoryBeanName=org.springframework.cloud.netflix.hystrix.HystrixCircuitBreakerConfiguration$HystrixWebConfiguration; factoryMethodName=hystrixFeature; initMethodName=null; destroyMethodName=(inferred); defined in class path resource …
我有一个带有自定义宏的Emacs Lisp文件,我希望它有所不同.代码如下:
(defmacro* when-let ((var value) &rest body)
`(let ((,var ,value))
(when ,var ,@body)))
(defun func ()
(when-let (a 1)
a))
Run Code Online (Sandbox Code Playgroud)
我希望像上面那样when-let精通font-lock-keyword并缩进.我知道我可以在我的.emacs文件中执行此操作,但我更喜欢将其作为本地目录或文件本地自定义.问题是目录本地和文件本地自定义似乎仅限于设置变量.在我的.emacs文件中,我有以下内容.
(add-hook 'emacs-lisp-mode-hook
(lambda ()
(put 'when-let 'lisp-indent-function 1)
(font-lock-add-keywords nil
'(("(\\(when-let\\)\\>" 1
font-lock-keyword-face)))))
Run Code Online (Sandbox Code Playgroud)
我想要这个,.dir-locals.el因为它只适用于一个文件.
所以出于某种原因,我在emacs中使用auctex的乳胶模式的一些钩子拒绝运行但没有给出任何错误(至少我没有在消息缓冲区中看到).这是我的.emacs中关于latex的大部分内容(除了一些关键字定义等等).我在Arch Linux上使用最新版本的auctex运行Emacs24.2.已经冥想了一段时间了,据我所知,这曾经工作得很好,直到今天我注意到flyspell和自动填充没有自动设置(可能已经发生了一段时间以这个速度,因为我避风港一段时间不使用auctex.
(add-to-list 'load-path "~/Dropbox/Emacs/")
(add-to-list 'load-path "~/Dropbox/Emacs/git/")
(add-to-list 'load-path "~/Dropbox/Emacs/magit/")
(add-to-list 'load-path "~/Dropbox/Emacs/GLSL/")
;; auto-complete
(require 'auto-complete)
(require 'auto-complete-config)
(require 'auto-complete-clang)
(ac-flyspell-workaround)
(add-to-list 'ac-modes 'LaTeX-mode)
(ac-config-default)
(setq ac-quick-help-delay 0)
(define-key ac-mode-map [(control tab)] 'auto-complete)
(setq-default ac-sources
'(ac-source-abbrev ac-source-dictionary
ac-source-words-in-same-mode-buffers))
(global-auto-complete-mode t)
(add-hook 'emacs-lisp-mode-hook
(lambda ()
(add-to-list 'ac-sources 'ac-source-symbols 'ac-source-variables)))
(defun add-sources-c-modes ()
(add-to-list 'ac-sources 'ac-source-semantic 'ac-source-clang))
(add-hook 'c-mode-hook 'add-sources-c-modes)
(add-hook 'c++-mode-hook 'add-sources-c-modes)
(define-key ac-completing-map "\C-n" 'ac-next)
(define-key ac-completing-map "\C-p" 'ac-previous)
;; DocView
(setq doc-view-continuous t)
(setq doc-view-resolution 300)
;; …
Run Code Online (Sandbox Code Playgroud) 我的"〜/ .emacs.d"目录中有几个.el文件,我在.emacs文件中添加了以下行,以便在启动时加载它们:
(let ((base "~/.emacs.d/")
(files '("user.el" "erlang.el" "sbcl-slime.el"))
(bfload (lambda (file) (load (expand-file-name (concat base file))))))
(mapcar bfload files))
Run Code Online (Sandbox Code Playgroud)
它有效,但这是正确的Emacs Lisp风格吗?请问如何改进?
读取DOC,我看到,我可以预测哪些Git会通过合并为"提交者"使用git config user.name和git config user.email沿$GIT_COMMITTER_NAME和$GIT_COMMITTER_EMAIL.但是当我编写执行该操作的代码时,我最终会感觉到我正在重写已经存在于Git中的一大块代码,而我更倾向于重用Git自己的代码.
所以,就像我更喜欢使用git rev-parse --git-dir而不是寻找.git和/或检查$GIT_DIR,我想使用命令git show-me-the --committer来获得通常的NAME <EMAIL>字符串.然而,我在手册中找不到这个.
#+CAPTION: kernel version
#+LABEL: fig:myfigure
#+NAME: fig:myfigure
[[/home/victor/myblog/pic4.png]]
Run Code Online (Sandbox Code Playgroud)
在组织模式下,似乎#+LABEL和#+NAME都用于交叉引用。它们之间有什么区别?
我想在调用 man 命令时使用 emacs 查看手册页。我将/etc/man.confPAGER 中的 pager 参数修改为emacs.
但是,它不起作用。有什么我应该修改的吗?