Clozure CL中文版023:Clozure CL IDE

  • 0

Clozure CL中文版023:Clozure CL IDE

Category:帮助手册 Tags : 

Clozure CL IDE

介绍

Clozure CL附带了在Mac OS X上使用Cocoa编写的集成开发环境的完整源代码。本章描述了如何构建和使用该环境,以下简称为“IDE”。

IDE提供了可编程文本编辑器,监听器窗口,Lisp数据结构的检查器,以及在Lisp中轻松构建Cocoa应用程序的方法。另外,它的源代码提供了一个用Lisp编写的相当复杂的Cocoa应用程序的例子。

当前版本的IDE已经看到了许多功能和许多错误修正的添加。虽然它绝不是最终产品,但我们希望它比以前的版本更有用,并且我们计划在IDE上为将来的版本做更多的工作。

构建IDE

构建Clozure CL IDE现在是一个非常简单的过程。

  1. 在shell会话中,cd到ccl目录。
  2. 从shell运行ccl。最简单的方法是执行ccl或ccl64命令。
  3. 评估表格 (require :cocoa-application)

例如,假设Clozure CL发行版安装在“/ usr / local / ccl”中,以下shell交互序列构建IDE:

oshirion:ccl mikel$ ccl64

Welcome to Clozure Common Lisp Version 1.2-r9198M-trunk  (DarwinX8664)!

? (require :cocoa-application)

;Loading #P”ccl:cocoa-ide;fasls;cocoa-utils.dx64fsl.newest”…

;Loading #P”ccl:cocoa-ide;fasls;cocoa-defaults.dx64fsl.newest”…

 

[…many lines of “Compiling” and “Loading” omitted…]

 

Saving application to /usr/local/ccl/Clozure CL.app/

 

oshirion:ccl mikel$

Clozure CL编译并加载构成IDE的各种子系统,然后构造一个名为“Clozure CL.app”的Cocoa应用程序包并将Lisp图像保存到其中。通常,Clozure CL会在Clozure CL发行版的根目录中创建应用程序包。

运行IDE

构建完成后,可以通过双击其图标正常运行“Clozure CL.app”应用程序。启动时,IDE最初会显示一个可用于与Lisp交互的侦听器窗口。您可以在侦听器窗口的提示符下键入Lisp表达式以进行评估。您还可以使用Hemlock编辑命令在侦听器窗口中编辑表达式的文本。

IDE功能

编辑Windows

您可以通过从“文件”菜单中选择“打开”,然后选择文本文件,或从“文件”菜单中选择“新建”来打开编辑器窗口。您还可以(ed)在侦听器窗口中评估表达式; 在这种情况下,Clozure CL会创建一个新窗口,就像您从“文件”菜单中选择“新建”一样。

编辑器窗口实现了Hemlock 编辑命令。您可以在任何编辑器窗口(包括监听器窗口)中使用Hemlock的所有编辑和自定义功能。

Lisp菜单

Lisp菜单提供了几个用于与正在运行的Lisp会话交互的命令,以及通过评估表达式与它交互的方式。您可以在任何编辑缓冲区中评估选定的文本范围。您可以编译和加载编辑器窗口的内容(请注意,在当前版本中,Clozure CL编译并加载与编辑器窗口关联的文件的内容;这意味着如果您尝试加载或编译没有编辑器窗口的窗口已保存到文件,结果是错误)。

您可以从Lisp菜单中断计算,触发中断和选择重新启动。您还可以显示回溯或打开“ 检查器”窗口

查询更新

在Lisp菜单的底部是一个名为“检查更新”的项目。如果您的Clozure CL副本来自Clozure Subversion服务器(这是首选来源),并且您的互联网连接正常,那么您可以选择此菜单项来检查您的Clozure CL副本的更新。

当您选择“检查更新”时,Clozure CL使用svn程序查询Clozure Subversion存储库并确定是否有新的Clozure CL更新。(这意味着在10.5之前的Mac OS X版本上,您必须确保在使用“检查更新”功能之前安装了Subversion客户端软件。 wikiHow页面 有关更多信息,请安装Subversion。)如果有可用的更新,Clozure CL会自动下载并安装它们。下载成功后,Clozure CL会自行重建,然后在新重建的Lisp上重建IDE。完成此过程后,您应该退出正在运行的IDE并启动新构建的IDE(它将与旧的IDE位于同一位置)。

通常,Clozure CL可以安装更新并自行重建而不会出现任何问题。有时,无法预料的问题(例如网络中断或硬件故障)可能会中断自我重建过程,并使您的Clozure CL副本无法使用。如果您希望经常更新Clozure CL的副本,那么在这种情况下保留工作环境的备份副本可能是谨慎的。您也可以随时从Clozure的存储库中获取完整的Clozure CL副本。

工具菜单

工具菜单提供对Apropos和Processes窗口的访问。Apropos窗口在运行的Lisp图像中搜索与您输入的任何文本匹配的符号。您可以使用Apropos窗口快速查找函数名称和其他有用的符号。“进程”窗口列出了当前Lisp会话中运行的所有线程。如果双击进程条目,Clozure CL将在该进程上打开一个Inspector窗口

检查员窗口

Inspector窗口显示有关Lisp值的信息。显示的信息从简单的数据值(例如字符)到复杂(在列表或CLOS对象等结构化数据的情况下)变化很大。窗口显示的左侧列显示对象属性的名称; 右侧列显示与这些属性关联的值。您可以通过双击检查右侧列中的值。

检查右侧列中的值会更改“检查器”窗口以显示双击的对象。您可以通过这种方式快速浏览结构化数据的字段,检查对象及其引用的对象。窗口左上角的导航按钮使您可以回溯步骤,备份以返回先前查看的对象,然后再前进到先前导航到的对象。

您可以通过在侦听器窗口中计算表达式来更改结构化对象的内容。刷新按钮(标有弯曲箭头)更新了检查器窗口的显示,使您可以快速查看更改数据结构的结果。

IDE来源

Clozure CL从Clozure CL发行版中“objc-bridge”和“cocoa-ide”目录中的源代码构建IDE。IDE作为一个整体是一个相对复杂的应用程序,当你第一次尝试理解如何构建Cocoa应用程序时,它可能不是最好的地方。为此,您可以从“examples / cocoa /”目录中的示例中获益更多。但是,一旦您熟悉这些示例,并且具有使用Cocoa和Objective-C桥构建自己的应用程序功能的经验,您可以浏览IDE源以了解它如何实现其功能。

Clozure CL REQUIRE功能的搜索路径包括“objc-bridge”和“cocoa-ide”目录。您可以使用加载在这些目录中定义的功能REQUIRE。例如,如果要从终端会话(或使用SLIME或ILISP的Emacs会话)使用Clozure CL的Cocoa功能,则可以进行评估(require :cocoa)。

应用程序生成器

IDE的一个重要特性目前没有Cocoa用户界面:应用程序构建器。应用程序构建器构造一个Cocoa 应用程序包,双击时运行Lisp图像。您可以使用应用程序构建器在Lisp中创建Cocoa应用程序。这些应用程序与使用XCode和Objective-C创建的Cocoa应用程序完全相同,只不过它们是用Lisp编写的。

要使应用程序构建器可用,请评估表达式(require :build-application)。如有必要,Clozure CL会加载所需的子系统。

build-application &key ( 名称 “myapplication” )( type-string quot; applquot; )( creator-string “omcl” )( 目录 (当前目录) )( copy-ide-resources t )( info-plist nil )( nibfiles 没有 )( main-nib-name nil )( application-class ' gui :: cocoa-application )( 顶级功能 )[功能]

ccl::build-application函数构造一个应用程序包,用满足Mac OS X所需的文件填充它,即bundle是一个可启动的应用程序,并将可执行的Lisp映像保存到bundle的正确子目录中。假设保存的Lisp图像包含正确的代码,用户可以随后通过在Finder中双击其图标来启动生成的Cocoa应用程序,并运行保存的Lisp环境。

关键字参数控制应用程序包的各个方面作为BUILD-APPLICATION构建它。

名称

指定包的应用程序名称。BUILD-APPLICATION创建一个应用程序包,其名称由此参数指定,并附加扩展名“.app”。例如,使用此参数的默认值会生成名为“MyApplication.app”的包。

类型串

指定要创建的包的类型。您通常不需要更改默认值,Mac OS X使用该默认值来识别应用程序包。

创作者弦

指定创建者代码,该代码在Mac OS X下唯一标识应用程序。默认创建者代码是Clozure CL的代码。有关保留和分配创建者代码的更多信息,请参阅Apple 关于该主题的开发人员页面

目录

用于BUILD-APPLICATION 创建应用程序包的目录。默认情况下,它在当前工作目录中创建捆绑包。除非您使用CURRENT-DIRECTORY设置工作目录,否则可能会在某个意外的位置创建捆绑包,因此最安全的方法是为此参数指定完整路径名。一个典型的值可能是”/Users/foo/Desktop/” (假设您的用户名是“foo”)。

复制IDE资源

是否从IDE的应用程序包中复制资源文件。默认情况下,对于此参数的值,在这种情况下,IDE资源不会复制到应用程序包中。BUILD-APPLICATION nibfiles和其他资源从IDE复制到新创建的应用程序包。在开发新应用程序时,此选项通常很有用,因为它使您构建的应用程序即使在完成设计之前也可以拥有功能齐全的用户界面。默认情况下,应用程序使用IDE的应用程序菜单和其他UI元素,除非您另行指定。一旦您的应用程序的UI完全实现,您可以选择通过NIL

信息-plist

用户提供的NSDictionary对象,用于定义要写入应用程序包的Info.plist文件的内容。默认值为NIL,指定如果copy-ide-resources为true,则使用IDE中的Info.plist,否则将使用使用默认值创建的新字典。您可以使用该函数创建合适的NSDictionary对象make-info-dict。有关此函数的参数的详细信息,请参阅“ccl / cocoa-ide / builder-utilities.lisp”中的定义。

nibfiles

路径名列表,其中每个路径名标识使用Apple的InterfaceBuilder 应用程序创建的nib文件。将每个nib文件复制到应用程序包中的适当位置,使应用程序可以根据需要从中加载用户界面元素。最安全的是为列表中的nibfiles提供完整的路径名。每个nib文件必须采用“.nib”格式,而不是“.xib”格式,以便应用程序可以加载它。BUILD-APPLICATION

主笔尖名

启动时最初加载的nib文件的名称。此nibfile中定义的用户界面成为应用程序的主界面。您必须为此参数提供合适的nib文件的名称,否则生成的应用程序将使用Clozure CL用户界面。

应用级

应用程序的CLOS类的名称。默认值是Clozure CL为图形应用程序提供的类。如果实现应用程序类,请提供其应用程序类的名称。如果没有,Clozure CL使用默认类。

顶级功能

应用程序启动时运行的顶级函数。通常,默认值(Clozure CL的顶层)运行良好,但在某些情况下,您可能希望自定义应用程序顶层的行为。编写自己的顶级信息的最佳信息来源是Clozure CL源代码,尤其是TOPLEVEL-FUNCTION“ccl / level-1 / l1-application.lisp”中的实现。

BUILD-APPLICATION在目录目录中创建名为“ name .app” 的文件夹。在该文件夹中,它会创建Mac OS X应用程序包预期包含的“Contents”文件夹,并使用“MacOS”和“Resources”文件夹以及必须包含的“Info.plist”和“PkgInfo”文件填充它存在于工作应用程序包中。它从参数中获取“Info.plist”和“PkgInfo”文件的内容。如果copy-ide-resources 为true,则它将从正在运行的IDE的“Resources”文件夹中复制“Resources”文件夹的内容。BUILD-APPLICATION

生成运行Cocoa应用程序所需的工作非常少。事实上,如果你提供BUILD-APPLICATION有效的nib文件和路径名,它会构建一个运行的Cocoa应用程序来显示你的UI。它根本不需要您编写任何代码来执行此操作。当然,除了显示nib文件中定义的UI之外,生成的应用程序不会执行任何操作。如果您希望UI完成任何操作,则需要编写代码来处理其事件。但是使用UI的正在运行的应用程序的路径非常短。

请注意,这BUILD-APPLICATION是一项正在进行的工作。它可以轻松构建一个可用的Cocoa应用程序,但它仍然有一些限制,在某些情况下可能会证明不方便。例如,在当前版本中,它没有提供指定与默认值不同的应用程序委托的简单方法。如果您发现当前限制BUILD-APPLICATION太严格,并且想要尝试扩展它以供您使用,您可以在“ccl / cocoa-ide / build-application.lisp”中找到它的源代码。您可以在“ccl / cocoa-ide / builder-utilities.lisp”中看到用于填充“Info.plist”文件的默认值。

有关如何使用的更多信息BUILD-APPLICATION,请参阅“ccl / examples / cocoa / currency-converter /”中的货币转换器示例。

从命令行运行应用程序生成器

通过CCL:BUILD-APPLICATION 从终端命令行运行调用,可以自动使用应用程序构建器。例如,在Mac OS X的终端窗口中的shell提示符下输入的以下命令构建了一个名为“Foo.app”的Clozure CL环境的工作副本:

ccl -b -e “(require :cocoa)” -e “(require :build-application)” -e “(ccl::build-application :name \”Foo\”)”

您可以使用相同的方法自动构建Lisp / Cocoa应用程序。Clozure CL -e按顺序处理通过参数传递的每个Lisp表达式,因此您可以简单地计算一系列Lisp表达式,如上例所示,以构建应用程序,以调用结束CCL:BUILD-APPLICATION。调用CCL:BUILD-APPLICATION可以处理所有相同的参数,就像在Clozure CL IDE的Listener窗口中对其进行评估一样。

构建一个实质性的Cocoa应用程序(而不是仅仅使用默认值来复制Lisp环境,如上例所示)可能涉及一个相对复杂的加载源文件序列,并可能评估Lisp表单。最好将命令行放在shell脚本中,以便更轻松地编辑和测试。

一个可能很复杂的问题是以正确的顺序加载所有Lisp源文件。在调用之前,您可以考虑使用ASDF来定义和加载包含应用程序所有部分的系统CCL:BUILD-APPLICATION。ASDF是一个“另一个系统定义工具”,一种make用于Lisp,并包含在Clozure CL发行版中。您可以在ASDF 主页上阅读有关ASDF的更多信息。

或者,您可以使用Common Lisp的标准功能以正确的顺序加载应用程序的文件。


Leave a Reply

搜索

分类目录

公 告

本网站学习论坛:

www.zhlisp.com

lisp中文学习源码:

https://github.com/zhlisp/

欢迎大家来到本站,请积极评论发言;

加QQ群学习交流。