缩进格式如下,没等宽有点变形。。:
a = if b
2
else
3
end
我喜欢的是:
a = if b
2
else
3
end
求解决,谢谢
还有像一些情况
a = my_method(my_method2(my_method3({
# ...
})))
本来就是因为太长了想换行,但他直接给我缩进成下一行的同一位置,我郁闷了。。
https://github.com/zenspider/enhanced-ruby-mode 这个缩进比 ruby-mode
好很多,不过不稳定,比较慢,有时候会假死。ruby-mode
可以调整的参数比较少,调整一块又会影响到另外的地方。
其实 Emacs 对 if 的缩进是 ruby style guide 里推荐的方式,觉得太长了可以 if 之前换行
a =
if foo
1
else
2
end
result = if some_cond
calc_something
else
calc_something_else
end
这样虽然看着能明显的知道 if 的开始结束,不过我感觉一点也不美观,左右不平衡,受不了。。
if some_cond
result = calc_something
else
result = calc_something_else
end
xixi
@xjz19901211 语义上同一个块关键词是对齐的。 因为这样看代码非常容易。 我给你期望的都成什么样子了。
假如这个 if 块比较大,阅读的人更不容易理解。
#15 楼 @xjz19901211 是挺好看的,但问题是缩进太多不好修改,而且编辑器很难计算。加个换行符也还是块起始行首字母对齐啊。
例如
x = if foo
bar
end
如果以后修改把 x
变成 xx
, 那么就要改 3 行代码 (很多人没有对齐强迫症,下面两行还不给你改,抓狂不?), 用换新行的样式就只用改 1 行。
#1 楼 @xjz19901211 第二个问题:
(require 'ruby-mode)
(setq ruby-deep-indent-paren nil)
#20 楼 @xjz19901211 我按照你的代码结构改了一下,你想要的效果是下面这张图么?
如果是,就不可能没用,你把你的代码打开,在任意一行输入
(setq ruby-deep-indent-paren nil)
把鼠标移到这行行尾,然后M-x eval-last-sexp
,再选中代码 tab 或者重新 indent buffer 就好了。
或者你直接把这两行代码加到 init.el 或者 .emacs 里面,然后退出重启 Emacs, 再打开这个文件,重新 indent 就好了。
@toctan 谢谢,这个效果比以前的好多了
其实我喜欢的是从什么地方开始,就从什么地方结束,在这个前提下顺便节省一下空间,如
a = if cond
# ..
else
# ..
end
每一个子块只相对上一语句的缩进增加一个缩进,又如
a = my_method(my_method2(
:str => 's'
))
# 而不喜欢下面的,感觉占用空间太浪费,又不能一眼让我看到调用参数
a = my_method(
my_method2(
:str => 's'
)
)
我喜欢的结构
def method(a)
b = case a
when
# ..
else
# ..
end
[b, 123]
end
一直都没看过语法规范什么的,都是按自己看着顺眼,对我来说又容易阅读的前提下,加上自己的强迫症,才到了如今只觉得我这格式的顺眼的地步。。
所以现在看到想 python, coffeescript 这些有开始没结束的语句,受不了了。。
目前看来我只能用 vim, sublime text 这类手动缩进的编辑器,或是哪天在 emacs 里写一个自己的缩进模式出来。。