当我编写C或Java代码时,它非常有规律,但是对于汇编(asm-mode
),它是如此混乱。
我正在使用auto-complete
和yasnippet
。我创建了代码片段并正在使用它们,但是代码的组织和缩进是杂乱无章的。
哪些软件包可以帮助我:
- 轻松正确地缩进代码和注释,以便我可以看到每段代码在做什么;
- 浏览大量代码,因此我可以轻松地在代码段之间跳转?
asm-mode
行为不同于其他事物)并配置一个不错的环境(跳转,代码完成)是有效的选择。
当我编写C或Java代码时,它非常有规律,但是对于汇编(asm-mode
),它是如此混乱。
我正在使用auto-complete
和yasnippet
。我创建了代码片段并正在使用它们,但是代码的组织和缩进是杂乱无章的。
哪些软件包可以帮助我:
asm-mode
行为不同于其他事物)并配置一个不错的环境(跳转,代码完成)是有效的选择。
Answers:
只需使用内置的asm-mode
。它使您可以突出显示任何汇编语言的语法。gas-mode
不会这样做,并且不能与AT&T语法一起使用。
如果要为设置缩进asm-mode
,请注意,您不能使用缩进,tab-width
但tab-stop-list
指定的空格可以显示1个标签,2个标签,3个标签...:
(setq tab-stop-list '(4 8 12 16 20 24 28 32 36 40 44 48 52 56 60
64 68 72 76 80 84 88 92 96 100 104 108 112
116 120))
上面的示例意味着第一个选项卡有4个空格,第二个选项卡(第一个选项卡旁边)有8个空格,第三个选项卡(第二个选项卡旁边)有12个空格...等等。
您还可以像这样生成列表:
(setq tab-stop-list (number-sequence 2 60 2))
number-sequence
生成一个数字列表,从起始数字2
(第一个参数)到最大60
(第二个参数),每个数字2
与其旁边的数字都不同。并记住要绑定newline-and-indent
到RET,因此Emacs会自动为您缩进。
如果您想跳来跳去,请使用Ctags,如下所示:
ctags -e -R
-e
表示生成要由Emacs使用的标签数据库。
-R
表示从项目根目录递归地为子目录中的文件生成标签。
之后,如果不使用Helm ,则可以使用Emacs中的helm-etags-select
另一个etags
客户端跳来跳去。
编辑:这是一个示例设置:
(require 'asm-mode)
(add-hook 'asm-mode-hook (lambda ()
(setq indent-tabs-mode nil) ; use spaces to indent
(electric-indent-mode -1) ; indentation in asm-mode is annoying
(setq tab-stop-list (number-sequence 2 60 2))))
(define-key asm-mode-map (kbd "<ret>") 'newline-and-indent)
(define-key asm-mode-map (kbd "M-.") 'helm-etags-select)
company-complete
按下时,您也可以完成基本操作S-TAB
:
(define-key asm-mode-map (kbd "<backtab>") 'company-complete)
您可以使用<tab>
来触发完成,因为双方<tab>
并M-i
运行相同的命令tab-to-tab-stop
进行的插入空格或制表符取决于你的设置indent-tabs-mode
。令人高兴的company-mode
是,您将获得迷你缓冲区中当前突出显示的候选对象的简要说明(如果有)。例如,如果您具有如下定义:
KeyStrokes word 0
当您将光标移动到KeyStrokes
候选对象时,它将word 0
在迷你缓冲区中打印。
您可以尝试加油模式。它应该可以帮助您解决问题。
asm-mode
应该做什么,但不应该做什么?(缺少哪些功能?)