emacs-china / EGO

EGO is a static site generator that depends on Emacs, Git and Org-mode.
94 stars 11 forks source link

Patch #95

Closed lujun9972 closed 7 years ago

lujun9972 commented 7 years ago

改了好多,仔细审核一下吧。 另外我觉得ego-mode可以先删了,反正要完全重写的。

kuangdash commented 7 years ago

用 complete-read 而非 ido-complete-read,补全的时候是要多按下 tab 的…还有,能给函数传一个参数的情况,何必多个参数?…再来是 宏 这个东西吧,用的好可以很省代码,但是这里代码多了功能没多呀……求解释

lujun9972 commented 7 years ago
  1. 因为不是所有人都喜欢ido风格的补全
  2. 增加那么多的参数是为了让函数更方便测试也更灵活
  3. 宏这个东西是为了让代码清晰一点,你不觉得代码里到处出现对ego--current-project-name和ego--last-project-name赋值显得很乱吗?
kuangdash commented 7 years ago
  1. ido 的风格就是横排或是竖排,这个可以设置的…而且配置了 helm 的话,这个就和 helm 一致了。
  2. 测试的话,可以把函数和这些全局变量打包进一个 progn 代码块来测试的。
  3. 全局变量就相当于一个状态机里的状态位,总是要存在的。只是说避免一些无谓的全局变量。lisp 的宏就是方便元编程进而减少代码量的东西,一般不会让代码变清晰吧。
lujun9972 commented 7 years ago
  1. 不排除人家就喜欢原生的补全方式,而且配置了ido或helm后,他们本身也会覆盖原生的补全效果。我们没有必要为别人做决定
  2. 测试的时候修改全局变量不是个好实践
  3. 看看我最后那个提交,我直接把ego--last-project-name删掉了,这个宏也干掉了。
lujun9972 commented 7 years ago

用函数或者宏来封装,至少通过函数名人家知道这一步是干嘛的,直接对变量进行赋值,意义太不明确了。

kuangdash commented 7 years ago

ido 补回来吧,不加 tab 总比加 tab 好呀。测试的时候可以先暂存全局变量后再改变,测试完后改回,不影响。 我看了一下 remove ego--last-project-name 的修改,ego--last-project-name 确实可以不留。“直接对变量赋值”这个事吧,把它放入函数或者添加注释都是明确意义的方式,哪种好些,看情况了。

lujun9972 commented 7 years ago

我是觉是你这样相当于强制别人加载ido包,这个不是很好 另外加可选参数那个,我觉得你要那样测试当然可以,但是何必这么麻烦呢,现在这样多简单。函数式编程嘛,尽量减小对全局变量的依赖。

kuangdash commented 7 years ago

为啥要把这种功能增强说成是强制加载…本来 ido 就是 emacs 自带呀。 测试这个事能不动主体代码就不动主体代码吧…不然也容易让读代码的混淆。 函数式编程这个我不感冒,编程也是种设计工作,好的设计才是重点。

lujun9972 commented 7 years ago

好吧,那我先关了