Commit c08f29ad authored by Dave Cooper's avatar Dave Cooper
Browse files

building up the Manuelle

parent 03774b93
......@@ -82,7 +82,15 @@
(global-set-key "\M-n" 'fi:push-input)
(global-set-key "\C-x&" '(lambda()(interactive) (switch-to-buffer gdl:*gdl-toplevel*)))
(global-set-key "\C-x*" 'fi:open-lisp-listener)
(global-set-key "\C-xy" '(lambda() (interactive) (other-window -1))))
(global-set-key "\C-xy" '(lambda() (interactive) (other-window -1)))
;;
;; Use C-j for newline-and-indent. If you really like it, you can bind
;; it to [Enter] by uncommenting the following line (from
;; http://emacswiki.org/emacs/AutoIndentation).
;;
;;(global-set-key (kbd "C-m") 'newline-and-indent)
)
(gdl:global-keys)
......
(asdf:defsystem #:gdl-tutorial
:description
"Auto-generated asdf defsys from Genworks GDL cl-lite."
:author
"Genworks and Dave Cooper unless otherwise indicated"
:license
"AGPL unless otherwise indicated"
:serial
t
:version
"2012101200"
:depends-on
(:gdl-dom)
:components
((:file "source/package")
(:file "source/parameters")
(:file "source/introduction")
(:file "source/installation")
(:file "source/assembly")))
\ No newline at end of file
(asdf:defsystem #:gdl-tutorial :description
"Auto-generated asdf defsys from Genworks GDL cl-lite."
:author
"Genworks and Dave Cooper unless otherwise indicated"
:license "AGPL unless otherwise indicated" :serial t
:version "2012101900" :depends-on (:gdl-dom)
:components
((:file "source/package") (:file "source/parameters")
(:file "source/introduction")
(:file "source/installation")
(:file "source/basic-operation")
(:file "source/assembly")))
\ No newline at end of file
This diff is collapsed.
\relax
\providecommand\HyperFirstAtBeginDocument{\AtBeginDocument}
\HyperFirstAtBeginDocument{\ifx\hyper@anchor\@undefined
\global\let\oldcontentsline\contentsline
\gdef\contentsline#1#2#3#4{\oldcontentsline{#1}{#2}{#3}}
\global\let\oldnewlabel\newlabel
\gdef\newlabel#1#2{\newlabelxx{#1}#2}
\gdef\newlabelxx#1#2#3#4#5#6{\oldnewlabel{#1}{{#2}{#3}}}
\AtEndDocument{\ifx\hyper@anchor\@undefined
\let\contentsline\oldcontentsline
\let\newlabel\oldnewlabel
\fi}
\fi}
\global\let\hyper@last\relax
\gdef\HyperFirstAtBeginDocument#1{#1}
\providecommand\HyField@AuxAddToFields[1]{}
\ifx\hyper@anchor\@undefined
\global \let \oldcontentsline\contentsline
\gdef \contentsline#1#2#3#4{\oldcontentsline{#1}{#2}{#3}}
\global \let \oldnewlabel\newlabel
\gdef \newlabel#1#2{\newlabelxx{#1}#2}
\gdef \newlabelxx#1#2#3#4#5#6{\oldnewlabel{#1}{{#2}{#3}}}
\AtEndDocument{\let \contentsline\oldcontentsline
\let \newlabel\oldnewlabel}
\else
\global \let \hyper@last\relax
\fi
\@writefile{toc}{\contentsline {chapter}{\numberline {1}Introduction}{1}{chapter.1}}
\@writefile{lof}{\addvspace {10\p@ }}
\@writefile{lot}{\addvspace {10\p@ }}
......@@ -41,7 +38,7 @@
\@writefile{toc}{\contentsline {subsection}{\numberline {2.1.2}Unpack the Distribution}{5}{subsection.2.1.2}}
\newlabel{subsec:unpackthedistribution}{{2.1.2}{5}{Unpack the Distribution\relax }{subsection.2.1.2}{}}
\@writefile{lof}{\contentsline {figure}{\numberline {2.1}{\ignorespaces Several Gendl versions and one GPL }}{6}{figure.2.1}}
\newlabel{fig:gendl-installation}{{2.1}{6}{Several Gendl versions and one GPL\relax }{figure.2.1}{}}
\newlabel{fig:gendl-installation}{{2.1}{6}{Several Gendl versions and one GPL \relax }{figure.2.1}{}}
\@writefile{toc}{\contentsline {subsection}{\numberline {2.1.3}Make a Desktop Shortcut}{6}{subsection.2.1.3}}
\newlabel{subsec:makeadesktopshortcut}{{2.1.3}{6}{Make a Desktop Shortcut\relax }{subsection.2.1.3}{}}
\@writefile{toc}{\contentsline {subsection}{\numberline {2.1.4}Populate your Initialization File}{6}{subsection.2.1.4}}
......@@ -78,5 +75,23 @@
\@writefile{lof}{\addvspace {10\p@ }}
\@writefile{lot}{\addvspace {10\p@ }}
\newlabel{chap:basicoperationofthegendlenvironment}{{3}{13}{Basic Operation of the Gendl Environment\relax }{chapter.3}{}}
\@writefile{toc}{\contentsline {section}{\numberline {3.1}Startup and Shutdown}{13}{section.3.1}}
\newlabel{sec:startupandshutdown}{{3.1}{13}{Startup and Shutdown\relax }{section.3.1}{}}
\@writefile{toc}{\contentsline {section}{\numberline {3.1}What is Different about Gendl?}{13}{section.3.1}}
\newlabel{sec:whatisdifferentaboutgendl?}{{3.1}{13}{What is Different about Gendl?\relax }{section.3.1}{}}
\@writefile{toc}{\contentsline {section}{\numberline {3.2}Startup, ``Hello, World!'' and Shutdown}{13}{section.3.2}}
\newlabel{sec:startup,hello,world!andshutdown}{{3.2}{13}{Startup, ``Hello, World!'' and Shutdown\relax }{section.3.2}{}}
\@writefile{toc}{\contentsline {subsection}{\numberline {3.2.1}Startup}{14}{subsection.3.2.1}}
\newlabel{subsec:startup}{{3.2.1}{14}{Startup\relax }{subsection.3.2.1}{}}
\@writefile{lof}{\contentsline {figure}{\numberline {3.1}{\ignorespaces Example of Simple Object Definition}}{15}{figure.3.1}}
\newlabel{fig:simpleobjectdefinition}{{3.1}{15}{Example of Simple Object Definition\relax }{figure.3.1}{}}
\@writefile{toc}{\contentsline {subsection}{\numberline {3.2.2}Developing and Testing a Gendl ``Hello World'' application}{15}{subsection.3.2.2}}
\newlabel{subsec:developingandtestingagendlhelloworldapplication}{{3.2.2}{15}{Developing and Testing a Gendl ``Hello World'' application\relax }{subsection.3.2.2}{}}
\@writefile{toc}{\contentsline {subsection}{\numberline {3.2.3}Shutdown}{16}{subsection.3.2.3}}
\newlabel{subsec:shutdown}{{3.2.3}{16}{Shutdown\relax }{subsection.3.2.3}{}}
\@writefile{toc}{\contentsline {section}{\numberline {3.3}Working with Projects}{16}{section.3.3}}
\newlabel{sec:workingwithprojects}{{3.3}{16}{Working with Projects\relax }{section.3.3}{}}
\@writefile{toc}{\contentsline {subsection}{\numberline {3.3.1}Directory Structure}{16}{subsection.3.3.1}}
\newlabel{subsec:directorystructure}{{3.3.1}{16}{Directory Structure\relax }{subsection.3.3.1}{}}
\@writefile{toc}{\contentsline {section}{\numberline {3.4}Customizing your Environment}{17}{section.3.4}}
\newlabel{sec:customizingyourenvironment}{{3.4}{17}{Customizing your Environment\relax }{section.3.4}{}}
\@writefile{toc}{\contentsline {section}{\numberline {3.5}Saving the World}{17}{section.3.5}}
\newlabel{sec:savingtheworld}{{3.5}{17}{Saving the World\relax }{section.3.5}{}}
......@@ -9,3 +9,7 @@
\indexentry{declarative|hyperpage}{2}
\indexentry{object-orientation!message-passing|hyperpage}{2}
\indexentry{object-orientation!generic-function|hyperpage}{2}
\indexentry{Genworks Gendl Console|hyperpage}{7}
\indexentry{gdl-user(1): |hyperpage}{9}
\indexentry{*slime-repl...*|hyperpage}{9}
\indexentry{regression tests|hyperpage}{11}
This is makeindex, version 2.15 [TeX Live 2011] (kpathsea + Thai support).
Scanning input file tutorial.idx....done (11 entries accepted, 0 rejected).
Sorting entries....done (38 comparisons).
Generating output file tutorial.ind....done (36 lines written, 0 warnings).
This is makeindex, version 2.15 [TeX Live 2009] (kpathsea + Thai support).
Scanning input file tutorial.idx....done (15 entries accepted, 0 rejected).
Sorting entries....done (70 comparisons).
Generating output file tutorial.ind....done (49 lines written, 0 warnings).
Output written in tutorial.ind.
Transcript written in tutorial.ilg.
\begin{theindex}
\item *slime-repl...*, \hyperpage{9}
\indexspace
\item Basic Lisp Techniques, \hyperpage{2}
\indexspace
......@@ -16,6 +20,11 @@
\indexspace
\item gdl-user(1): , \hyperpage{9}
\item Genworks Gendl Console, \hyperpage{7}
\indexspace
\item Ignorance-based Engineering, \hyperpage{1}
\indexspace
......@@ -33,4 +42,8 @@
\subitem generic-function, \hyperpage{2}
\subitem message-passing, \hyperpage{2}
\indexspace
\item regression tests, \hyperpage{11}
\end{theindex}
This diff is collapsed.
\BOOKMARK [0][-]{chapter.1}{Introduction}{}% 1
\BOOKMARK [1][-]{section.1.1}{Welcome}{chapter.1}% 2
\BOOKMARK [1][-]{section.1.2}{Knowledge Base Concepts According to Genworks}{chapter.1}% 3
\BOOKMARK [1][-]{section.1.3}{Goals for this Tutorial}{chapter.1}% 4
\BOOKMARK [1][-]{section.1.4}{What is GenDL?}{chapter.1}% 5
\BOOKMARK [1][-]{section.1.5}{Why GDL \(what is GDL good for?\)}{chapter.1}% 6
\BOOKMARK [1][-]{section.1.6}{What GDL is not}{chapter.1}% 7
\BOOKMARK [0][-]{chapter.2}{Installation}{}% 8
\BOOKMARK [1][-]{section.2.1}{Installation of pre-packaged Gendl}{chapter.2}% 9
\BOOKMARK [2][-]{subsection.2.1.1}{Download the Software and retrieve a license key}{section.2.1}% 10
\BOOKMARK [2][-]{subsection.2.1.2}{Unpack the Distribution}{section.2.1}% 11
\BOOKMARK [2][-]{subsection.2.1.3}{Make a Desktop Shortcut}{section.2.1}% 12
\BOOKMARK [2][-]{subsection.2.1.4}{Populate your Initialization File}{section.2.1}% 13
\BOOKMARK [1][-]{section.2.2}{Installation of open-source Gendl}{chapter.2}% 14
\BOOKMARK [2][-]{subsection.2.2.1}{Install and Configure your Common Lisp environment}{section.2.2}% 15
\BOOKMARK [2][-]{subsection.2.2.2}{Load and Configure Quicklisp}{section.2.2}% 16
\BOOKMARK [1][-]{section.2.3}{System Startup and Testing}{chapter.2}% 17
\BOOKMARK [2][-]{subsection.2.3.1}{System Startup}{section.2.3}% 18
\BOOKMARK [2][-]{subsection.2.3.2}{Basic System Test}{section.2.3}% 19
\BOOKMARK [2][-]{subsection.2.3.3}{Full Regression Test}{section.2.3}% 20
\BOOKMARK [1][-]{section.2.4}{Getting Help and Support}{chapter.2}% 21
\BOOKMARK [0][-]{chapter.3}{Basic Operation of the Gendl Environment}{}% 22
\BOOKMARK [1][-]{section.3.1}{Startup and Shutdown}{chapter.3}% 23
\BOOKMARK [0][-]{chapter.1}{Introduction}{}
\BOOKMARK [1][-]{section.1.1}{Welcome}{chapter.1}
\BOOKMARK [1][-]{section.1.2}{Knowledge Base Concepts According to Genworks}{chapter.1}
\BOOKMARK [1][-]{section.1.3}{Goals for this Tutorial}{chapter.1}
\BOOKMARK [1][-]{section.1.4}{What is GenDL?}{chapter.1}
\BOOKMARK [1][-]{section.1.5}{Why GDL \(what is GDL good for?\)}{chapter.1}
\BOOKMARK [1][-]{section.1.6}{What GDL is not}{chapter.1}
\BOOKMARK [0][-]{chapter.2}{Installation}{}
\BOOKMARK [1][-]{section.2.1}{Installation of pre-packaged Gendl}{chapter.2}
\BOOKMARK [2][-]{subsection.2.1.1}{Download the Software and retrieve a license key}{section.2.1}
\BOOKMARK [2][-]{subsection.2.1.2}{Unpack the Distribution}{section.2.1}
\BOOKMARK [2][-]{subsection.2.1.3}{Make a Desktop Shortcut}{section.2.1}
\BOOKMARK [2][-]{subsection.2.1.4}{Populate your Initialization File}{section.2.1}
\BOOKMARK [1][-]{section.2.2}{Installation of open-source Gendl}{chapter.2}
\BOOKMARK [2][-]{subsection.2.2.1}{Install and Configure your Common Lisp environment}{section.2.2}
\BOOKMARK [2][-]{subsection.2.2.2}{Load and Configure Quicklisp}{section.2.2}
\BOOKMARK [1][-]{section.2.3}{System Startup and Testing}{chapter.2}
\BOOKMARK [2][-]{subsection.2.3.1}{System Startup}{section.2.3}
\BOOKMARK [2][-]{subsection.2.3.2}{Basic System Test}{section.2.3}
\BOOKMARK [2][-]{subsection.2.3.3}{Full Regression Test}{section.2.3}
\BOOKMARK [1][-]{section.2.4}{Getting Help and Support}{chapter.2}
\BOOKMARK [0][-]{chapter.3}{Basic Operation of the Gendl Environment}{}
\BOOKMARK [1][-]{section.3.1}{What is Different about Gendl?}{chapter.3}
\BOOKMARK [1][-]{section.3.2}{Startup, ``Hello, World!'' and Shutdown}{chapter.3}
\BOOKMARK [2][-]{subsection.3.2.1}{Startup}{section.3.2}
\BOOKMARK [2][-]{subsection.3.2.2}{Developing and Testing a Gendl ``Hello World'' application}{section.3.2}
\BOOKMARK [2][-]{subsection.3.2.3}{Shutdown}{section.3.2}
\BOOKMARK [1][-]{section.3.3}{Working with Projects}{chapter.3}
\BOOKMARK [2][-]{subsection.3.3.1}{Directory Structure}{section.3.3}
\BOOKMARK [1][-]{section.3.4}{Customizing your Environment}{chapter.3}
\BOOKMARK [1][-]{section.3.5}{Saving the World}{chapter.3}
......@@ -22,6 +22,8 @@
\usepackage {makeidx}
\usepackage {textcomp}
\usepackage [colorlinks=true, urlcolor=cyan]{hyperref}
\newsavebox {\boxedverb}
......@@ -418,8 +420,7 @@ You will see this command shown in the \emph{mini-buffer} at the bottom of the E
\end{figure}
\item On Windows, you will get a new window, named the Allegro CL Console or the Gendl Console,
as shown in Figure
\item On Windows, you will get a new window, named the the \index{Genworks Gendl Console}Genworks Gendl Console, as shown in Figure
\ref{fig:genworks-gendl-console}. This window might start out in minimized form (as an icon at the bottom of your screen). Click on it
to open it. Watch this console for any errors or warnings.
......@@ -434,10 +435,10 @@ through Emacs' ``Buffers'' menu) where you will see these messages.
The messages will consist of compiling and loading information, followed by copyright and welcome information
for Gendl. After these messages have finished, you should see the following command prompt:
\texttt{gdl-user(1): }
\texttt{\index{gdl-user(1): }gdl-user(1): }
The Genworks GDL console contains a command prompt, but mostly you will use the Slime REPL buffer in Emacs
to type commands. The Genworks GDL console is mainly used for displaying output text from the Gendl system and from your application.
The Genworks GenDL console contains a command prompt, but mostly you will use the \index{*slime-repl...*}*slime-repl...* buffer in Emacs to type commands. The Genworks GenDL console is mainly used for
displaying output text from the Gendl system and from your application.
\end{enumerate}
......@@ -536,12 +537,12 @@ you will see the robot in a shaded dynamic view.
\label{subsec:fullregressiontest}
The following commands will invoke a full regression test, including a test of the Surface and Solids
\index{regression tests}The following commands will invoke a full regression test, including a test of the Surface and Solids
primitives provided by the SMLib geometry kernel. Note that the SMLib geometry kernel is only available with
proprietary Gendl licenses --- therefore if you have an open-source or Trial version, you these regression
tests will not all function.
In Emacs at the Slime REPL prompt, type the following commands:
In Emacs at the \texttt{gdl-user>} prompt in the \texttt{*slime-repl...*} buffer, type the following commands:
\begin{enumerate}
......@@ -583,28 +584,269 @@ If you run into unexplained errors in the installation and startup process, plea
\label{chap:basicoperationofthegendlenvironment}
This chapter will step you through all the basic steps of
operating a typical Gendl environment. We will not go into any depth
about the additional features of the environment or language syntax in
this section --- this is just for getting familiar and practicing with
the mechanics of operating the environment with a keyboard.
\section{What is Different about Gendl?}
\label{sec:whatisdifferentaboutgendl?}
Gendl is a dynamic language environment with incremental compiling and in-memory
definitions. That means that as long as the system is running, you can \emph{compile} new \emph{definitions} of functions, objects, etc, and they will immediately become available as part of the running system.
If you shut down and restart the system, then you will have to recompile and/or reload those definitions in order
to bring the system back into the same state. This is typically done automatically, using commands placed into the \texttt{gdlinit.cl} initialization file.
definitions. That means that as long as the system is running, you can \emph{compile} new \emph{definitions} of functions, objects, etc, and they will immediately become available as part of the running system,
and you can begin testing them immediately or update an existing set of objects to observe their new behavior.
\section{Startup and Shutdown}
In many other programming language systems, you have to start the
system from the beginning and reload all the files in order to test
new functionality.
In Gendl, if you simply shut down the system after having compiled and
loaded a set of files with new definitions, then when you restart the
system you will have to recompile and/or reload those definitions in
order to bring the system back into the same state. This is typically
done automatically, using commands placed into the \texttt{gdlinit.cl} initialization file, as introduced in Section
\ref{sec:customizingyourenvironment}. Alternatively, you can compile and load definitions into your Gendl
session, then save the ``world'' in that state. That way, it is
possible to start a new Gendl ``world'' which already has all your
application's definitions loaded and ready for use, without having to
procedurally reload any files. You can then begin to make and test new
definitions (and re-definitions) starting from this new ``world.''
\label{sec:startupandshutdown}
\section{Startup, ``Hello, World!'' and Shutdown}
\label{sec:startup,hello,world!andshutdown}
The typical Gendl environment consists of two programs: Gnu
Emacs (the editor), and Common Lisp engine (e.g. the \texttt{mlisp.exe} executable of Allegro CL). Emacs runs as the main \emph{process}, and this in turn starts the Common Lisp engine as a \emph{sub-process}.
The typical Gendl environment consists of three programs: Gnu
Emacs (the editor), a Common Lisp engine with Gendl system loaded or built into it (e.g. the \texttt{gdl.exe} executable in your \texttt{program/} directory), and (optionally) a web browser
such as Firefox, Google Chrome, Safari, Opera, or Internet
Explorer. Emacs runs as the main \emph{process}, and this in turn starts the CL engine with Gendl as a \emph{sub-process}. The CL engine typically runs an embedded \emph{webserver}, enabling you to access your application through a standard web browser.
As introduced in Chapter
\ref{chap:installation}, the typical way to start a pre-packaged Gendl environment is with the \texttt{run-gdl.bat} (Windows), or \texttt{run-gdl} (MacOS, Linux) script files. Invoke this script file from your computer's file manager, from the command-line,
or from a desktop shortcut if you have created one as outlined in section
\ref{subsec:makeadesktopshortcut}.
\ref{chap:installation}, the typical way to start a pre-packaged Gendl environment is with the \texttt{run-gdl.bat} (Windows), or \texttt{run-gdl} (MacOS, Linux) script files. Invoke this script file
from your computer's file manager, or from a desktop shortcut if you
have created one as outlined in section
\ref{subsec:makeadesktopshortcut}. Your installation executable may also have created a
Windows ``Start'' menu item for Genworks Gendl. Of course you can also
invoke \texttt{run-gdl.bat} from the Windows ``cmd'' command-line, or from another command shell such as Cygwin.\footnote{Cygwin is also useful as a command-line tool on Windows
for interacting with a version control system like Subversion (svn).}
\subsection{Startup}
\label{subsec:startup}
Startup of a typical Gendl development session consists of
two fundamental steps: (1) starting the Emacs editing environment,
and (2) starting the actual Gendl process as a ``sub-process'' or ``inferior'' process
within Emacs. The Gendl process should automatically establish a network connection
back to Emacs, allowing you to interact directly with the Gendl process from within Emacs.
\begin{enumerate}
\item Invoke the \texttt{run-gdl.bat} or \texttt{run-gdl.bat} startup script.
\item You should see a blue emacs window as in Figure
\ref{fig:emacs-startup}. (alternative colors are also possible).
\item Press M-x (Alt-x), and type \texttt{gendl} in the mini-buffer, as seen in Figure
\ref{fig:mini-buffer}.
\item (MS Windows): Look for the Genworks Gendl Console
window, or (Linux, Mac) use the Emacs ``Buffer'' menu to visit the
``*inferior-lisp*'' buffer. Note that the Genworks Gendl Console
window might start as a minimized icon; click or double-click it to
un-minimize.
\item Watch the Genworks GDL Console window for any
errors. Depending on your specific installation, it may take from a
few seconds to several minutes for the Genworks Gendl Console (or
*inferior-lisp* buffer) to settle down and give you a \texttt{gdl-user(): } prompt. This window is where you will see most of your program's textual output, any
error messages, warnings, etc.
\item In Emacs, type: \texttt{C-x \&} (or select Emacs menu item Buffers$\rightarrow$*slime-repl...*) to visit the ``*slime-repl ...*'' buffer. The full name
of this buffer depends on the specific CL/Gendl platform which you are
running. This buffer contains an interactive prompt, labeled \texttt{gdl-user>}, where you will enter most of your commands to interact with your running Gendl session
for testing, debugging, etc. There is also a web-based graphical interactive environment called \emph{tasty} which will will cover in Chapter
\ref{chapter:tasty}
\item To ensure that the Gendl interpreter is up and running, type: \texttt{(+ 2 3)} and press [Enter].
\item You should see the result \texttt{5} echoed back to you below the prompt.
\end{enumerate}
\subsection{Developing and Testing a Gendl ``Hello World'' application}
\label{subsec:developingandtestingagendlhelloworldapplication}
\begin{enumerate}
\item type C-x (Control-x) 2, or C-x 3, or use the ``Split
Screen'' option of the File menu to split the Emacs frame into two
``windows'' (``windows'' in Emacs are non-overlapping panels, or
rectangular areas within the main Emacs window).
\item type C-x o several times to move from one window to
the other, or move the mouse cursor and click in each window. Notice
how the blinking insertion point moves from one window to the other.
\item In the top (or left) window, type C-x C-f (or select Emacs menu item
``File$\rightarrow$Open File'') to get the ``Find file'' prompt in the
mini-buffer.
\item Type C-a to move the point to the beginning of the mini-buffer line.
\item Type C-k to delete from the point to the end of the mini-buffer.
\item Type \texttt{\textasciitilde/hello.gdl} and press [Enter]
\item You are now editing a (presumably new) file of Gendl
code, located in your HOME directory, called \texttt{hello.gdl}
\item Enter the text from Figure
\ref{fig:simpleobjectdefinition} into the \texttt{hello.gdl} buffer. You do not have to match the line breaks and whitespace as shown in the example.
You can auto-indent each new line by pressing [TAB] after pressing [Enter] for the newline.
\emph{Protip:}You can also try using \texttt{C-j} instead of [Enter], which will automatically give a newline and auto-indent.
\begin{figure}
\begin{lrbox}{\boxedverb}
\begin{minipage}{\linewidth}
\begin{verbatim}
(in-package :gdl-user)
(define-object hello ()
:computed-slots
((greeting "Hello, World!")))
\end{verbatim}
\end{minipage}
\end{lrbox}
\fbox{\usebox{\boxedverb}}
\caption{Example of Simple Object Definition}
\label{fig:simpleobjectdefinition}
\end{figure}
\item type \texttt{C-x C-s} (or choose Emacs menu item \emph{File$\rightarrow$Save}) to save the contents of the buffer (i.e. the window)
to the file in your HOME directory.
\item type \texttt{C-c C-k} (or choose Emacs menu item \emph{SLIME$\rightarrow$Compilation$\rightarrow$Compile/Load File}) to compile \& load the code from this file.
\item type \texttt{C-c o} (or move and click the mouse) to switch to the bottom window.
\item In the bottom window, type \texttt{C-x \&} (or choose Emacs menu item \emph{Buffers$\rightarrow$*slime-repl...*}) to get the \texttt{*slime-repl ...*} buffer, which should contain a \texttt{gdl-user>} prompt. This is where you normally type interactive Gendl commands.
\item If necessary, type \texttt{M \textgreater} (that is, hold down Meta (Alt), Shift, and the ``\textgreater'' key) to
move the insertion point to the end of this buffer.
\item At the \texttt{gdl-user>} prompt, type
\begin{verbatim}(make-self 'hello)
\end{verbatim} and press [Enter].
\item At the \texttt{gdl-user>} prompt, type
\begin{verbatim}(the greeting)
\end{verbatim} and press [Enter].
\item You should see the words \texttt{Hello, World!} echoed back to you below the prompt.
\end{enumerate}
\subsection{Shutdown}
\label{subsec:shutdown}
To shut down a development session gracefully, you should first shut down the Gendl process,
then shut down your Emacs.
\begin{itemize}
\item Type \texttt{M-x quit-gendl} (that is, hold Alt and press X, then release both while you type \texttt{quit-gendl} in the mini-buffer), then press [Enter]
\item Type \texttt{C-x C-c} to quit from Emacs. Emacs will prompt you to save any modified buffers before exiting.
\end{itemize}
\section{Working with Projects}
\label{sec:workingwithprojects}
Gendl contains utilities which allow you to treat your
application as a ``project,'' with the ability to compile,
incrementally compile, and load a ``project'' from a directory tree of
source files representing your project. In this section we give an
overview of the expected directory structure and available control
files, followed by a reference for each of the functions included in
the bootstrap module.
\subsection{Directory Structure}
\label{subsec:directorystructure}
You should structure your applications in a modular fashion, with the
directories containing actual Lisp sources called "source."
You may have subdirectories which themselves contain "source"
directories.
We recommend keeping your codebase directories relatively flat,
however.
In Figure
\ref{fig:yoyodyne-base} is an example application directory, with four source files.
\section{Customizing your Environment}
\label{sec:customizingyourenvironment}
You may customize your environment in several different ways,
for example by loading definitions and settings into your Gendl
``world'' automatically when the system starts, and by specifying
fonts, colors, and default buffers (to name a few) for your emacs
editing environment.
\section{Saving the World}
\label{sec:savingtheworld}
You may customize your environment in several different ways,
for example by loading definitions and settings into your Gendl
``world'' automatically when the system starts, and by specifying
fonts, colors, and default buffers (to name a few) for your emacs
editing environment.
\backmatter
......
......@@ -22,4 +22,12 @@
\contentsline {subsection}{\numberline {2.3.3}Full Regression Test}{11}{subsection.2.3.3}
\contentsline {section}{\numberline {2.4}Getting Help and Support}{11}{section.2.4}
\contentsline {chapter}{\numberline {3}Basic Operation of the Gendl Environment}{13}{chapter.3}
\contentsline {section}{\numberline {3.1}Startup and Shutdown}{13}{section.3.1}
\contentsline {section}{\numberline {3.1}What is Different about Gendl?}{13}{section.3.1}
\contentsline {section}{\numberline {3.2}Startup, ``Hello, World!'' and Shutdown}{13}{section.3.2}
\contentsline {subsection}{\numberline {3.2.1}Startup}{14}{subsection.3.2.1}
\contentsline {subsection}{\numberline {3.2.2}Developing and Testing a Gendl ``Hello World'' application}{15}{subsection.3.2.2}
\contentsline {subsection}{\numberline {3.2.3}Shutdown}{16}{subsection.3.2.3}
\contentsline {section}{\numberline {3.3}Working with Projects}{16}{section.3.3}
\contentsline {subsection}{\numberline {3.3.1}Directory Structure}{16}{subsection.3.3.1}
\contentsline {section}{\numberline {3.4}Customizing your Environment}{17}{section.3.4}
\contentsline {section}{\numberline {3.5}Saving the World}{17}{section.3.5}
......@@ -34,7 +34,7 @@
:usepackage ("dvips" "graphicx")
:usepackage ("usenames, dvipsnames" "color")
:usepackage ("makeidx")
;;:usepackage ("pdfborder={0 0 0}" "hyperref")
:usepackage ("textcomp")
:usepackage ("colorlinks=true, urlcolor=cyan" "hyperref")
:newsavebox ("\\boxedverb")
:makeindex nil)
......@@ -67,14 +67,14 @@ written consent from Genworks International.")
(write-the-object object (:base)))))
(glisp:run-shell-command
(format nil "cd ~a; pdflatex tutorial.tex" pdf-path))
(format nil "cd ~a; pdflatex -interaction=nonstopmode tutorial.tex" pdf-path))
(glisp:run-shell-command
(format nil "cd ~a; makeindex tutorial" pdf-path))
(dotimes (n level)
(glisp:run-shell-command
(format nil "cd ~a; pdflatex tutorial.tex" pdf-path)))))
(format nil "cd ~a; pdflatex -interaction=nonstopmode tutorial.tex" pdf-path)))))
(define-object assembly (com.genworks.dom:assembly)
......
;;
;; Copyright 2002, 2009, 2012 Genworks International
;;
;; This source file is part of the General-purpose Declarative
;; Language project (GDL).
;;
;; This source file contains free software: you can redistribute it
;; and/or modify it under the terms of the GNU Affero General Public
;; License as published by the Free Software Founda