##language:zh ''' 自然,方便的开发管理环境 ''' '''[[http://leoeditor.com/|Leo's Home --主页]]'''下载安装 * [[ZqStudy/MyLearningSkill#Leo|俺的工具箱]] ~ [[http://www.programmer.com.cn/3484/|《程序员》7月刊]] 介紹Leo 体验... <> ||<^><><
>-- ZoomQuiet [<>]||<^>'''学习日志'''<>|| = 文学编程 = * LiterateProgramming -- 文学编程 * 也就是那种认为源代码只是构成程序的一小部分的想法。 * '''程序的真正主体是对它的算法、结构、目的和用法的描述——实现它的源代码并不是主要的。''' * 体验:[[BPUG/2006-07-30|CPUG第九次.Leo+lightTracker]] = Leo = * {{http://leoeditor.com/LeoProse.gif}} * [[http://leoeditor.com/front.html|Leo is ...]] * 这个纯Python 的编辑环境用最简单的代码实现了如此丰富的编程思想 * Leo 可以是 '''一个通用的数据管理环境''' * Leo 可以是 '''一个柔韧性的项目,程序或是其它数据的浏览器''' * Leo 可以是 '''一个项目管理器''' * Leo 可以是 '''一个提纲式的程序编辑器''' * Leo 可以是 .... * 下载帮助文件来学习 [[attachment:_sbooks.chm]] * 在线阅读 : [[http://leoeditor.com/intro.html|The Leo Tutorial — Leo 4.11 documentation]] * [[http://leoeditor.com/slides.html|Slides — Leo 4.11 documentation]] * [[http://leoeditor.com/usersguide.html|Leo’s Users’ Guide — Leo 4.11 documentation]] == 开发体验 == * 我开发后期全都使用Leo 管理了项目文件 * 下载尝试: [[attachment::CVSanalyser.leo]] ||<^>通常的界面<>||{{attachment::leo0-snap.jpg}}|| ||<^>我喜欢的形式:<
>通过菜单命令:'''"Window/Toggle Split Direction"''' 设置||{{attachment::leo1-snap.jpg}}|| ||<^><>|| {{attachment::leo-regbook.gif}}|| === @file === * 使用 '''@fiile''' 标签(directive) 就可以将 Leo 环境用作 * '''知识管理''','''项目管理''' * {{attachment::leo-scrap.jpg}} * 以及前示的项目管理了 * 因为可以自动与外部文件同步哪 * 注意上面的截屏,在Leo 载入时,自动的将 '''@file '''指示的文件,从外部文件更新入Leo 文件了 * 而且,在Leo 中进行了编辑保存时,也会自动更新外部文件 * 所以,可以象 NewEdit,UltraEdit 等等编辑环境那样来开发程序,而在外部执行调试 * 其实 Leo 也开放 Script 接口,你可以来开发定制一些功能的 ==== @ignore ==== * 保存时,不改变外部文件。此项一般要去除。 ==== @others ==== * 在使用 '''@file''' 标签后, * 可以简单的使用 '''@others'''标签来包含当前结点以下的所有结点 * 象XSL 中的{{{}}} 哈哈哈 ==== 自动导入 ==== * Leo 的 '''File/Import.../Import To @file''' 命令,支持对 C/C++/C#;Java;Python;Perl...语言的自动分析文章化组织的导入 * 不过,自动生成的文本中可能有一些标签: * {{{@ignore @language python }}} * 是不属于 '''@file''' 管理范围的, * 只要简单的注释掉,就可以成为标准的,可以自动同步外部文件的文本结点对象了 === @root === * 是'''文章编辑环境'''的标准支持 * 可以用以 编写文档 * {{attachment::leo-doc.jpg}} * 组织代码也一样 * {{attachment::leo-root.jpg}} * 章,节,段落 显式的组织在几个窗口中 * 对应的代码中的 类,子类,函式等等也以同样的形式组织起来 * '''直观,自然的将我们的注意力,限定在小范围的代码中,而整体代码的结构,由Leo 管理了 优雅 聪明 ''' ==== <
> ==== * 在 '''@root'''限定处理下,各子结点的引用,与包含处理是使用 `<<章节>>` 标记 * 比如说:上一截屏中的 `<>` ==== Tangle & Untangle ==== * 这时,针对外部文件的同步,需要人工操作 * 菜单命令:'''"File/Tangle.../Tangle"''' - 混出 * 菜单命令:'''"File/Untangle.../Untangle"''' - 混入 * 是一对相应的操作 * Tangle 是将当前的编辑混出到外部文件中 * Untangle 反之 ==== @silent ==== * 比'''@file''', 好象'''@root'''的内容管理麻烦些 * 但是有一点好处是可以声明 '''@silent''' * 命令Leo 在同步文件时,不向外部文件输出 Leo 的注释文本,生成干净的代码文件 ----- * 如果是团队开发,最好用@thin,另外还有比@silent更方便的命令。和@thin的文档在一起。by tomz ---- '''什么东西?研究之 ''' * [[http://leoeditor.com/atThin.html|Using @thin and @all]] * 快速翻译来学习使用 ==== @thin ==== 大多数情况中 @thin 如同 @file 一样的工作. 实际上,你可以简单的将 @file 替换为 @thin 进行正常的 outline 操作. 这里是主要几点 @file 与 @thin 不同之处: * Leo 不会在 .leo 文件的 @thin 节点树中保存信息 * 源自 @thin 的文件 (可以称作 "轻依赖"文件) 是从文件的outline 信息重建 @thin 树的. 具体的就是利用文本中 @+node 和 @-node 作为独特的标识节点 *. @all 指示符仅仅在 @thin 树中起作用. 此指示符与 @others 类似, 不过对其有些限制: 它将倒出所有标记以內的节点到文件中,包括标记为 @ignore 和 @others 以下的树会当作普通的孤立节点倒出. (不妙的体验是,原先 @others 可以限定下属节点倒出文本时的缩进,而@all 粗暴的将所有下级节点当作同级的兄弟处理了!) 对于类似 LeoPy.leo 中的 @thin leoProjects.txt 文件,@all 指示符 是必须的. leoProjects.txt 文件包含所谓"工程节点" . 即,非程序文件:仅仅是些无关数据的简单收集.这时,@others 决不会工作: Leo 会抱怨有太多的 孤节点 * 使用@thin 最有利的是,人们进行协同开发时不用频繁的同步 .leo 文件! 1. 开发者仅仅需要检入 "轻依赖"文件 到 CVS. 1. CVS仓库 "参考" .leo 文件. 实际所有相关文件除了 @thin 节点信息什么也没有包含. 1. 参考文件 当且仅当 工程中有新文件加入时才会变化. 1. 开发者们只使用本地的 参考文件 复制就可以开展自个儿的工作. 比如说, 代替直接使用 LeoPyRef.leo , 我利用叫 LeoPy.leo 的复制品. 通过 @thin 节点指引所有本地工作文件. === @root vs. @file 树 === @file 树比 @root 树使用起来方便很多: 1. @file 树需要的指示符支持比 @root 树要少; 所有 @root 树中的章节都需要声明(而且不能重名,在同一文件中!), 而 @file 树常常包含很多非命名的章节节点. 在 @file 树中, @others 指示符 行为就象关联起所有非常命名的章节. 1. 工作在 @root 树中,用户必须明确调用 Tangle 和 Untangle 命令. 而 Leo 会自动混入/出 @file 树 , 保存时混出所有变动到 outline, 重新打开 .loe 文件时自动混入所有修改从 outline. 但是, @root 树比 @file 树要 柔韧很多: 1. 在 @file 树中, 章节必须是包含在子节点中的,而且引用点也是固定的. 1. 在 @root 树中一个被声明的章节, 并不限制其可以在哪里被引用. 此外,@unit 指示符命令甚至于扩展了章节的引用, 可以不限制在一个 @root 树中! 即,你可以在一个 @root 中命名一个章节, 而在另一个 @root 树中引用(可以看作 节点的 clone 操作,只是在引用处看不到全部内容,除非混出为文件) 1. 在 @root 中的章节声明,也不限制声明的地点. @root 树与 @file 树不同之处在于: 1. 只有 @root 树可以包含章节定义行(不过 @file 中可以使用 "<< class declarations >>"类声明的专用章节) 1. 只有 @file 树可以包含 @others 指示符. 1. @c 指示符 需要章节名出现在 @root 的节点标题树中. 1. @c 指示符仅仅可以工作在 @file 树的体文本起始处.所谓 体文本是在 @root 中没有标记会被忽略,而在 @file 树是作为无命名的代码章节内容处理的节点正文文本. === 更多节点控制 === ''还是我找资料贴出来吧。是和@file相关的,不是和@root相关的。 by tomz'' * 嗬嗬 是也乎 Leo 随发行版,附带了 LeoDocs.leo (1mb)等等文档,含有极丰富的内容 呜乎哀哉 一定要好好看哪 {{{ Users Guide-->Chapter 4: Writing Programs in Leo-->Appendix 1 to Chapter 4: Using @asis, @noref and @nosent trees }}} * 有一表格 ||节点树类型||生成文件是否含结构标记注释?<
> Derived files contain sentinels? || 章节或是@others 支持?<
>Sections and @others expanded?|| || @file|| yes|| yes|| || @nosent|| no || yes|| || @noref|| yes || no|| || @asis|| no || no|| * 经体验, 可以简单的使用 @nosent 替换 @root ,可以象 @file 一样的使用,却又没有Python格式的注释的结构信息 * 而且,@others 章节声明也可以很好的混同使用 * 只是不能象 @root 那样在正文中使用{{{@root expfile.t2t}}} 模式的声明,而必须在 outline 树节点中显要的指明 * 如此就可以使用 Leo 方便的管理,编辑不支持 '''#''' 为注释的各种语言文件了 * 嗯嗯 ? 只是可惜的是这样一来,所有代码只能安全的存储在 .leo 文件中,生成的代码文件是干净了,但是团队开发时,就要反复同步 .leo 文件,否则,难以快速把握哪些文件受到修改了………… == 反馈 == <> == 体验 == === 解决Ubuntu 下面Tk中文字体问题 === <> <>