leo的bug翻案(二)
发现之前发布的leo的bug其实并不是由于注释的原因导致的代码解析错误 其实是代码最外围包了一个 extern "C"{......} 导致了没法正确解析但是删掉这个的话,没有办法使用tuxedo的库编译过去于是使用leo的切片技术,把extern “C”{和}切成两片,然后再嵌入回去.ok,搞定
leo的编码
leo默认使用utf-8编码我也喜欢utf-8,但是主机编码不是搞上去的代码输出的中文是乱码 无奈,只有使用@encoding GB2312,在leo的每个文件前面指定文件的编码 但是这样太麻烦了,打开myLeoSettings.leo 找到Unicode options这一节点@string default_derived_file_encoding = utf-8@string new_leo_file_encoding = utf-8 改程序的话,我一般是导入derived_file,所以先只改@string default_derived_file_encoding = GB2312
leo的bug
使用leo import 一个file以后,未作任何更改.去掉@iguro 未作任何更改,wrote回去,发现无法编译了报告:“{” has no matching “}” 发现原代码中有一堆注释,被leo截取到了最前面,放到了根目录下其中有个 ………/*…………………………….}*/}/*END extern “C”*/其中END那行上面有个}是未注释的!!!!!!!!!!!!!!!!!!!但是因为夹在两个注释中间也被leo连着一起弄到最前面了导致少了一个}太土了.
leo的 注释
leo自己的注释,格式如下:以@开始以 @c 结束如果使用leo编程的话,程序语言都带有自己的注释.没必要用leo的 除非是写一些文档,需要写一些输出的时候不想让别人看到的注释.
section代码片段的使用
前面说过,leo支持输出文件的时候,在根节点写入@all输出的时候,会自动用所有子节点的内容,替换填充@all但是这样只能顺次填充每个子节点的内容. @all只是简单全部替换,这里还有更灵活的方法:用类似<< name>>的语法,来替换@all<<>>中间是名字,子节点的名字就是<
用leo生成derived files
想把直接在leo里面写的东西,输出到外部文件也很简单 用@thin开头,后跟一个包含路径的文件名.这样就创造了一个derived files对leo文件保存的时候,会将对应内容写入指定的文件中打开leo的时候,将会逐个读入这些文件的内容这些derived files可以在外部编辑 @all通常用在 derived files 的那个节点中,这样这个derived files节点的子结点的内容,在保存外部文件的时候,会逐个插入到@all所在的地方这样就可以将一整个不好拆分的程序代码文件,按功能,实现方法,个人爱好或其他什么诡异的方式来拆分成层次结构完全不必拘泥于必须按class 或函数之类的限定方式来拆分.这就是以人为本的拆分方式,哈哈~~~~
输出干净代码
对修改写入文件的时候,leo默认会添加一些它自己的注释. 如果想得到不含注释的干净的代码,将@file改为@nosent或改成@file-nosent说写入文件中的就是干净的,不包含标记注释
导入代码文件,并设置其写入
可以将一个外部文件import为一个@file此时将会自动将其解剖,java,c c 文件根节点的内容,会自动加上以下信息:@ignore@language c@others@ignore是为了避免误操作对外部文件写入,有ignore的时候,在leo中的修改和编辑,是不会写入到外部文件的.将其删除,在保存,可以看到log中显示对外部文件进行了写入.
leo设置
一些简单设置,让leo用起来更顺手一些 leo也是根据.leo文件来配置.根据一下顺序来查找配置 The file leoSettings.leo in the leo/config directory. The file leoSettings.leo in the user’s home directory. The file myLeoSettings.leo in the leo/config directory. The file myLeoSettings.leo in the user’s home directory. The file being loaded. 在后面找到的配置,会将前面的配置覆盖.The file being loaded是指在打开当前leo文件的时候,也会查找其中的@settings … 繼續閱讀
leo
LiterateProgramming — 文学编程 也就是那种认为源代码只是构成程序的一小部分的想法。 程序的真正主体是对它的算法、结构、目的和用法的描述–实现它的源代码并不是主要的。 Leo 不是IDE! 所以 Leo 不能自动完成 Leo 不能调用环境运行 Leo 不能单步追踪 Leo 不能自动重构代码 Leo 不能自动定位类定义 Leo 不能…… 那么为什么我喜欢使用Leo来作一切? 编程时… C时,常常迷失在命名相近的函式名中! JAVA时,常常迷失在对象树中! PHP时,常常迷失在分布到太多页面的函式! Python 时,常常因为写的太高兴,造成过大的函式而要反复重构 那末………… 那么,到底编程时什么最重要? 何谓”tangled网络”? 人的自然思维是非线性的,是自由漫生的 Leo 的节点树操作非常简单,支持我快速调整工程组织 甚至形成类似"数据为中心,框架化开发"的 "以结构为中心,模板化开发"的习惯 Technorati : leo