分页: 1 / 2

emacs问题求助

发表于 : 2010-12-29 17:38
tpli
有好多问题要问,干脆都在这一个帖子里吧。


===
如何根据扩展名不同选择不同的加亮方式: 已解决

代码: 全选

(add-to-list 'auto-mode-alist '("\\.extension\\'" . your-favorite-mode))
===
目前问题,安装cedet后
配置文件里面设置为以下

代码: 全选

(setq semanticdb-project-roots
      (list
       (expand-file-name ".")))
(global-set-key [C-tab] ' senator-completion-menu-popup)
但是 C-tab 时只有有些函数能够自动补全,变量和一些函数都不能自动补全,请问是什么问题:已解决
这个问题已经想明白了,emacs下的这个补全是和程序架构有关的,但是vim下面的 C-p 或者 C-n 是关注的单词本身,可以从当前文件中选择匹配,或者从系统定义的头文件里选择匹配(个人猜测,应该是这样),也就是说一串字符,不是什么变量,也不是什么函数,先输入几个字符,然后用vim的C-p就能匹配出来,但是emacs却不能补全。emacs只能找到变量的定义、函数的定义才能补全。
当然,emacs也肯定可以补全当前文本中匹配的字符串而不考虑程序的结构,谁给指导一下怎么才能实现好吗。已解决可以选择 auto-complete
另外有个小问题,比如一个结构体里面有两个 char buf_a[100]; char buf_b[100]; 此时 C-tab 就会弹出一个窗口,选择的话只能通过鼠标吗?感觉太不方便了,google了不少,没说可以用什么快捷键啊。

===




















[del]这个对于一般的通用的文件倒是正常的,比如.c .sh 或者别的文件,emacs都会选择适合的加亮规则。
但是有时候会自己定义一个自己用的扩展名,类似备忘什么的,里面的有些东西会和c的语法很相似,这个时候emacs启动,但是因为扩展名不是通用的扩展名,所以emacs就不会加亮,我还要手动 m-x c-mode 运行一下才行。
我想让emacs默认启动编译这些文件的时候也选择c模式加亮。文件的扩展名有自己来定。

一句话总结就是让emacs根据扩展名(不是通用的扩展名)的选择加亮方式 :em06 [/del]

thx

Re: emacs如何根据后缀名设置不同的加亮模式

发表于 : 2010-12-29 19:33
anewbie

代码: 全选

(add-to-list 'auto-mode-alist '("\\.extension\\'" . your-favorite-mode))

Re: emacs如何根据后缀名设置不同的加亮模式

发表于 : 2010-12-29 22:57
tpli
谢谢楼上 :em01

请问你是怎么找到的啊。

Re: emacs如何根据后缀名设置不同的加亮模式

发表于 : 2010-12-30 10:11
anewbie
tpli 写了:谢谢楼上 :em01

请问你是怎么找到的啊。
怎么找到的,真忘了。

用这玩意儿好些年了,无论换作是谁,都会知道的,经验而己。

Re: emacs如何根据后缀名设置不同的加亮模式

发表于 : 2010-12-30 10:26
eexpress
按照扩展名识别,太假了。

Re: emacs如何根据后缀名设置不同的加亮模式

发表于 : 2010-12-30 11:15
anewbie
eexpress 写了:按照扩展名识别,太假了。
自然可以按照文件内容识别,magic-mode-alist 之类,但有些人就喜欢用扩展名来区分。

Re: emacs如何根据后缀名设置不同的加亮模式

发表于 : 2010-12-30 11:39
eexpress
vim的招数那么多。还可指定路径。

Re: emacs如何根据后缀名设置不同的加亮模式

发表于 : 2010-12-30 11:45
tpli
谢谢。

另外,怎么继续上面的设置 c-mode-style呢
因为如果把c-mode-style 'bsd 写到配置文件的话,当启动的文件不是 c-mode时,emacs会报错,如何让emacs选择c-mode后,再自动设置 style?

thx

Re: emacs如何根据后缀名设置不同的加亮模式

发表于 : 2010-12-31 9:03
anewbie
eexpress 写了:vim的招数那么多。还可指定路径。
可以按文件名,文件内容,时间,属主,路径,大小……及其任意组合来选择 mode.
tpli 写了:谢谢。

另外,怎么继续上面的设置 c-mode-style呢
因为如果把c-mode-style 'bsd 写到配置文件的话,当启动的文件不是 c-mode时,emacs会报错,如何让emacs选择c-mode后,再自动设置 style?

thx
c-mode-hook

Re: emacs问题求助

发表于 : 2010-12-31 12:12
anewbie
tpli 写了: 这个问题已经想明白了,emacs下的这个补全是和程序架构有关的,但是vim下面的 C-p 或者 C-n 是关注的单词本身,可以从当前文件中选择匹配,或者从系统定义的头文件里选择匹配(个人猜测,应该是这样),也就是说一串字符,不是什么变量,也不是什么函数,先输入几个字符,然后用vim的C-p就能匹配出来,但是emacs却不能补全。emacs只能找到变量的定义、函数的定义才能补全。
当然,emacs也肯定可以补全当前文本中匹配的字符串而不考虑程序的结构,谁给指导一下怎么才能实现好吗。未解决
另外有个小问题,比如一个结构体里面有两个 char buf_a[100]; char buf_b[100]; 此时 C-tab 就会弹出一个窗口,选择的话只能通过鼠标吗?感觉太不方便了,google了不少,没说可以用什么快捷键啊。
你 google 用的关键词太矬,使用 auto-complete 解决所有问题。

Re: emacs如何根据后缀名设置不同的加亮模式

发表于 : 2010-12-31 12:57
lilydjwg
anewbie 写了: 可以按文件名,文件内容,时间,属主,路径,大小……及其任意组合来选择 mode.
能按随机数或者当前时间之类的选择 mode 不? :em04

Re: emacs如何根据后缀名设置不同的加亮模式

发表于 : 2010-12-31 13:09
tpli
anewbie 写了:
eexpress 写了:vim的招数那么多。还可指定路径。
可以按文件名,文件内容,时间,属主,路径,大小……及其任意组合来选择 mode.
tpli 写了:谢谢。

另外,怎么继续上面的设置 c-mode-style呢
因为如果把c-mode-style 'bsd 写到配置文件的话,当启动的文件不是 c-mode时,emacs会报错,如何让emacs选择c-mode后,再自动设置 style?

thx
c-mode-hook
谢谢。 hook稍微查了一下:
emacs以mode来组织各种不同的编辑环境,通常每种文件类型都有一个独立的 major-mode,比如 c-mode
定制某个特定的mode除了通过设置快捷键和修改一些mode提供的变量之外,还可以有一个方法。通常major-mode都会提供一个hook,mode名字加上 -hook,在进入这个major-mode之后会调用对应的hook里加入的函数。

Re: emacs问题求助

发表于 : 2010-12-31 13:12
tpli
pocoyo 写了:
让emacs根据扩展名(不是通用的扩展名)的选择加亮方式
看不懂。lz能上个图给小鸟 解释解释不?
水牛不要嘲笑我。。

Re: emacs如何根据后缀名设置不同的加亮模式

发表于 : 2010-12-31 13:23
anewbie
lilydjwg 写了:
anewbie 写了: 可以按文件名,文件内容,时间,属主,路径,大小……及其任意组合来选择 mode.
能按随机数或者当前时间之类的选择 mode 不? :em04
这是相声还是认真的?
好吧,能,在 after-*-hook 后挂个函数,能用敲 lisp 代码确定的条件都能。
前提:不考虑伪随机与“随机”的差异,不考虑获取“当前时间”的指令执行时的“当前时间”与执行具体任务的指令执行时的“当前时间”的细微差异。

Re: emacs问题求助

发表于 : 2010-12-31 15:16
tpli
ls真是emacs大牛啊
有gtalk没啊,加个好友 :em06