想问下大家,emacs的代码习惯将右括号弄在同一行,嵌套多了的时候,是如何顺利阅读整个结构的,熟能生巧吗?那当初刚入门的时候,不会觉得难受吗?
别看括号,看字。
另外,主流语言(比如说类 C 的语言)里强调不要嵌套层数太多是因为类 C 语言里「嵌套≈更多更深的控制流」,而 Lisp 里嵌套不一定有控制流。所以没必要强求压扁。
太形象了
主要还是对elisp不熟悉,作为新手看到这种格式,阅读起来太难受了
关于elisp的括号显示有两套方案,就是上面提到的paren-face和rainbow-delimiters,分别是隐藏括号和为括号着色。如果你稍微熟悉了lisp风格的排版,你可以只着色光标所在位置和与其对应位置的那对括号,并且着色缩进来帮助你确定语法结构,关于以语法结构来移动光标和编辑,本论坛比较推荐的大概是懒猫的fingertip。
如果你需要,请看此处: topic/28495
以及此处: emacs-builtin-mode/11937
关于高亮: lisp-extra-font-lock/29549
elisp的原型之一MacLisp比C老了一点,非要说传统大概也没那么传统,追溯到algol上这俩也是差不多的
谢谢提供相关链接,我说的"传统"不太准确,应该是"比较常规、容易阅读"的排版方式。
Lisp系长得都不好看,大家都依靠合理的缩进和编辑器着色来阅览代码,而elisp是属于最丑的那个梯队的:函数名长得要命,各种代码风格混搭,空格tab混着用。即使编辑器给力也很难说好看。只能说得靠经验形成自己的一套审美了。
你把括号全去掉然后当 Python 来读
让ai帮忙写代码的时候,也经常碰到最后收尾的时候右括号不匹配的情况
其实看了多种写法后,才反应过来,elisp好像不介意把代码全部弄成一行,如果你看得过来的话。
但是其他语言好像不是这样的,有强制换行这种要求。
关于这个问题,站里有一个大略的讨论:topic/28045/6
(或者)换行/缩进敏感语义本就不是必要的,只是这样相对来说更美观,更具备自然语言语义的直观,所以我们现在才看到这么多缩进敏感语言大行其道(Haskell在ghci和实际编译中写法不同的设计或许也与此有关)
所以说 python 也是一种 lisp 方言
使用好看的主題和字體很重要,你的主題和字體都很丑,你的括號顏色都不一樣,看着費勁很正常。
那个括号颜色应该是 rainbow-delimiters 自动打的。字体和主题的话就不纠结了,windows下能正常显示,看着舒服就ok了,毕竟当时也挑了很久,习惯了。
彩虹括号的颜色在一些较为成熟的设定里是指定了的,通常采用交替的高低对比度颜色,你可以在:custom-face
下自己改一改(同时换一个缩进方案)
除了python shell之类的脚本语言,正经的语言都是这样的
我觉得他是故意的 因为目前社区里lisp不也和python一样 缩进和括号绑定了嘛 重点是 他是做到了缩进和括号绑定了的 所以他是不用数括号 只要数缩进的