summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Terei <davidterei@gmail.com>2012-03-23 12:32:24 -0700
committerDavid Terei <davidterei@gmail.com>2012-03-23 12:32:24 -0700
commitc1bd2e5a59accec64f87a07bb5e565a428f9db2d (patch)
treeb56f9219c85d75d57225a67daedf736e3af8b477
parentd8a30633a60ee9f1e8cf6ffe48bbd672331f9096 (diff)
downloadhaskell-c1bd2e5a59accec64f87a07bb5e565a428f9db2d.tar.gz
clean to some docs
-rw-r--r--docs/coding-style.html60
-rw-r--r--docs/index.html.in22
-rw-r--r--docs/vh/vh.xml593
3 files changed, 329 insertions, 346 deletions
diff --git a/docs/coding-style.html b/docs/coding-style.html
index 8fbb27688c..37aaf8dd46 100644
--- a/docs/coding-style.html
+++ b/docs/coding-style.html
@@ -1,12 +1,12 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
-<HTML>
-<HEAD>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<head>
<meta http-equiv="content-type" content="text/html;charset=iso-8859-1">
- <TITLE>Style Guidelines for fptools</TITLE>
-</HEAD>
-<BODY>
+ <title>Style Guidelines for fptools</title>
+</head>
+<body>
-<H1>Style Guidelines for fptools</h1>
+<h1>Style Guidelines for fptools</h1>
<h2>Comments</h2>
@@ -36,7 +36,7 @@ the only Microsoft Press book that's worth reading.)
<p><li>
Autoconf documentation.
-See also <a href="http://peti.gmd.de/autoconf-archive/">The autoconf macro archive</a> and
+See also <a href="http://peti.gmd.de/autoconf-archive/">The autoconf macro archive</a> and
<a href="http://www.cyclic.com/cyclic-pages/autoconf.html">Cyclic Software's description</a>
<p><li> <a
@@ -166,7 +166,7 @@ Avoid conditional code like this:
</pre>
Instead, add an appropriate test to the configure.ac script and use
-the result of that test instead.
+the result of that test instead.
<pre>
#ifdef HAVE_BSD_H
@@ -260,8 +260,8 @@ typedef enum
piece of incomplete/broken code.
<p><li> When testing, try to make infrequent things happen often.
- For example, make a context switch/gc/etc happen every time a
- context switch/gc/etc can happen. The system will run like a
+ For example, make a context switch/gc/etc happen every time a
+ context switch/gc/etc can happen. The system will run like a
pig but it'll catch a lot of bugs.
</ul>
@@ -335,7 +335,7 @@ Inline functions should be "static inline" because:
gcc will delete static inlines if not used or theyre always inlined.
<li>
- if they're externed, we could get conflicts between 2 copies of the
+ if they're externed, we could get conflicts between 2 copies of the
same function if, for some reason, gcc is unable to delete them.
If they're static, we still get multiple copies but at least they don't conflict.
</ul>
@@ -379,7 +379,7 @@ in the library.
</pre>
<p><li>
-Don't define macros that expand to a list of statements.
+Don't define macros that expand to a list of statements.
You could just use braces as in:
<pre>
@@ -393,7 +393,7 @@ You could just use braces as in:
(but it's usually better to use an inline function instead - see above).
<p><li>
-Don't even write macros that expand to 0 statements - they can mess you
+Don't even write macros that expand to 0 statements - they can mess you
up as well. Use the doNothing macro instead.
<pre>
#define doNothing() do { } while (0)
@@ -421,32 +421,32 @@ Try to use ANSI C's enum feature when defining lists of constants of
the same type. Among other benefits, you'll notice that gdb uses the
name instead of its (usually inscrutable) number when printing values
with enum types and gdb will let you use the name in expressions you
-type.
+type.
<p>
Examples:
<pre>
typedef enum { /* N.B. Used as indexes into arrays */
- NO_HEAP_PROFILING,
- HEAP_BY_CC,
- HEAP_BY_MOD,
- HEAP_BY_GRP,
- HEAP_BY_DESCR,
- HEAP_BY_TYPE,
- HEAP_BY_TIME
+ NO_HEAP_PROFILING,
+ HEAP_BY_CC,
+ HEAP_BY_MOD,
+ HEAP_BY_GRP,
+ HEAP_BY_DESCR,
+ HEAP_BY_TYPE,
+ HEAP_BY_TIME
} ProfilingFlags;
</pre>
instead of
<pre>
- # define NO_HEAP_PROFILING 0 /* N.B. Used as indexes into arrays */
- # define HEAP_BY_CC 1
- # define HEAP_BY_MOD 2
- # define HEAP_BY_GRP 3
- # define HEAP_BY_DESCR 4
- # define HEAP_BY_TYPE 5
- # define HEAP_BY_TIME 6
+ # define NO_HEAP_PROFILING 0 /* N.B. Used as indexes into arrays */
+ # define HEAP_BY_CC 1
+ # define HEAP_BY_MOD 2
+ # define HEAP_BY_GRP 3
+ # define HEAP_BY_DESCR 4
+ # define HEAP_BY_TYPE 5
+ # define HEAP_BY_TIME 6
</pre>
-and
+and
<pre>
typedef enum {
CCchar = 'C',
diff --git a/docs/index.html.in b/docs/index.html.in
index 5a65fe50a8..e85bc89a69 100644
--- a/docs/index.html.in
+++ b/docs/index.html.in
@@ -45,24 +45,14 @@
Documentation for the GHC API.
</P>
</LI>
-
-<!--
- <LI>
- <P>
- <B><A HREF="Cabal/index.html">Cabal</A></B>
- </P>
- <P>An infrastructure for building and distributing Haskell
- software.</P>
- </LI>
--->
</UL>
- <P>For more information, see the following:</p>
- <ul>
- <li><p><a href="http://www.haskell.org/ghc/">GHC Home Page</a></p></li>
- <li><p><a href="http://hackage.haskell.org/trac/ghc/">
- GHC Developers Home</a></p></li>
- </ul>
+ <P>For more information, see the following:</P>
+ <UL>
+ <LI><P><A href="http://www.haskell.org/ghc/">GHC Home Page</A></P></LI>
+ <LI><P><A href="http://hackage.haskell.org/trac/ghc/">
+ GHC Developers Home</A></P></LI>
+ </UL>
</BODY>
</HTML>
diff --git a/docs/vh/vh.xml b/docs/vh/vh.xml
index 0e0f8f55a0..5c25e3109c 100644
--- a/docs/vh/vh.xml
+++ b/docs/vh/vh.xml
@@ -2,318 +2,311 @@
<!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
]>
-
- <article id="visual-haskell">
-
- <articleinfo>
-
- <title>Visual Haskell User's Guide</title>
- <author>
- <firstname>Simon</firstname>
- <surname>Marlow</surname>
- <email>simonmar@microsoft.com</email>
- </author>
- <author>
- <firstname>Krasimir</firstname>
- <surname>Angelov</surname>
- <email>kr.angelov@gmail.com</email>
- </author>
-
-<!--
- <abstract>
- <para></para>
- </abstract>
--->
-
- </articleinfo>
-
- <section id="sec-introduction">
- <title>Introduction</title>
-
- <para>Visual Haskell is a plugin for Microsoft's Visual Studio
- development environment to support development of Haskell software.
- Like the other Visual languages, Visual Haskell integrates with the
- Visual Studio editor to provide interactive features to aid Haskell
- development, and it enables the construction of projects consisting of
- multiple Haskell modules.</para>
-
- <section id="sec-obtaining">
- <title>Installing Visual Haskell</title>
-
- <para>In order to use Visual Haskell, you need <ulink url="http://msdn.microsoft.com/vstudio/productinfo/">Visual Studio .NET
- 2003</ulink>. Right now, this is the only supported version of Visual
- Studio - unfortunately we haven't yet added support for the 2005
- Beta. The Express languages (Visual C++ Express etc.) also will not
- work, because they don't have support for plugins.</para>
-
- <para>You don't need to install GHC separately: Visual Haskell
- is bundled with a complete GHC distribution, and various other tools
- (Happy, Alex, Haddock).</para>
-
- <para>The latest Visual Haskell installer can be obtained from
- here:</para>
-
- <para><ulink
- url="http://www.haskell.org/visualhaskell/"><literal>http://www.haskell.org/visualhaskell/</literal></ulink></para>
- </section>
-
- <section id="release-notes">
- <title>Release Notes</title>
-
- <section>
- <title>Version 0.0, first release</title>
-
- <para>This release is a technology preview, and should be considered
- alpha quality. It works for us, but you are fairly likely to
- encounter problems. If you're willing to try it out and report
- bugs, we'd be grateful for the feedback.</para>
-
- <itemizedlist>
- <listitem>
- <para>This release of Visual Haskell is bundled with a
- development snapshot of GHC, version 6.5 from around 14
- September 2005. This version of GHC is used to provide the
- interactive editing features, and will be used to compile all
- code inside Visual Haskell. It is possible that in future
- releases we may be able to relax this tight coupling between
- Visual Haskell and the bundled GHC.</para>
-
- <para>Please note that future releases of Visual
- Haskell will update the compiler, and hence the
- packages, and so may break your code. Also note that because
- the bundled GHC is not a released version, it may have bugs and
- quirks itself: please report them as usual to
- <email>glasgow-haskell-bugs@haskell.org</email>.</para>
- </listitem>
-
- <listitem>
- <para>We're not making source code for the plugin generally
- available at this time, due to licensing restrictions on the
- Visual Studio APIs that the plugin uses (for more
- information see <ulink
- url="http://msdn.microsoft.com/vstudio/extend/">Visual Studio
- Extensibility Center</ulink>). If you're interested in
- contributing to Visual Haskell, please get in touch with the
- authors.</para>
- </listitem>
- </itemizedlist>
- </section>
+<article id="visual-haskell">
+
+ <articleinfo>
+
+ <title>Visual Haskell User's Guide</title>
+ <author>
+ <firstname>Simon</firstname>
+ <surname>Marlow</surname>
+ <email>simonmar@microsoft.com</email>
+ </author>
+ <author>
+ <firstname>Krasimir</firstname>
+ <surname>Angelov</surname>
+ <email>kr.angelov@gmail.com</email>
+ </author>
+
+ </articleinfo>
+
+ <section id="sec-introduction">
+ <title>Introduction</title>
+
+ <para>Visual Haskell is a plugin for Microsoft's Visual Studio
+ development environment to support development of Haskell software.
+ Like the other Visual languages, Visual Haskell integrates with the
+ Visual Studio editor to provide interactive features to aid Haskell
+ development, and it enables the construction of projects consisting of
+ multiple Haskell modules.</para>
+
+ <section id="sec-obtaining">
+ <title>Installing Visual Haskell</title>
+
+ <para>In order to use Visual Haskell, you need <ulink url="http://msdn.microsoft.com/vstudio/productinfo/">Visual Studio .NET
+ 2003</ulink>. Right now, this is the only supported version of Visual
+ Studio - unfortunately we haven't yet added support for the 2005
+ Beta. The Express languages (Visual C++ Express etc.) also will not
+ work, because they don't have support for plugins.</para>
+
+ <para>You don't need to install GHC separately: Visual Haskell
+ is bundled with a complete GHC distribution, and various other tools
+ (Happy, Alex, Haddock).</para>
+
+ <para>The latest Visual Haskell installer can be obtained from
+ here:</para>
+
+ <para><ulink
+ url="http://www.haskell.org/visualhaskell/"><literal>http://www.haskell.org/visualhaskell/</literal></ulink></para>
</section>
- <section id="sec-bugs">
- <title>Getting support, reporting bugs</title>
- <para>Please report bugs to
- <email>glasgow-haskell-bugs@haskell.org</email> (subscribe <ulink url="http://www.haskell.org/mailman/listinfo/glasgow-haskell-bugs">here</ulink>), clearly indicating
- that your bug report relates to Visual Haskell, and giving as much
- information as possible so that we can reproduce the bug. Even if
- you can't reproduce the bug reliably, it is still useful to report
- what you've seen.</para>
-
- <para>For help and support, use the
- <email>glasgow-haskell-users@haskell.org</email> (subscribe <ulink
- url="http://www.haskell.org/mailman/listinfo/glasgow-haskell-users">here</ulink>) mailing list.</para>
- </section>
-
- <section id="sec-license">
- <title>License</title>
-
- <blockquote>
- <para>Copyright © Microsoft Corporation. All rights reserved.</para>
- <para>Copyright © The University of Glasgow. All rights reserved.</para>
- <para>Copyright © Krasimir Angelov. All rights reserved.</para>
-
- <para>Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:</para>
-
- <itemizedlist>
- <listitem>
- <para>Redistributions of source code must retain the above
- copyright notice, this list of conditions and the following
- disclaimer.</para>
- </listitem>
-
- <listitem>
- <para>Redistributions in binary form must reproduce the above
- copyright notice, this list of conditions and the following
- disclaimer in the documentation and/or other materials provided
- with the distribution.</para>
- </listitem>
-
- <listitem>
- <para>The names of the copyright holders may not be used to endorse
- or promote products derived from this software without specific
- prior written permission.</para>
- </listitem>
- </itemizedlist>
-
- <para>THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS
- "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- COPYRIGHT HOLDERS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
- AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
- ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- POSSIBILITY OF SUCH DAMAGE.</para>
- </blockquote>
- </section>
+ <section id="release-notes">
+ <title>Release Notes</title>
+ <section>
+ <title>Version 0.0, first release</title>
+
+ <para>This release is a technology preview, and should be considered
+ alpha quality. It works for us, but you are fairly likely to
+ encounter problems. If you're willing to try it out and report
+ bugs, we'd be grateful for the feedback.</para>
+
+ <itemizedlist>
+ <listitem>
+ <para>This release of Visual Haskell is bundled with a
+ development snapshot of GHC, version 6.5 from around 14
+ September 2005. This version of GHC is used to provide the
+ interactive editing features, and will be used to compile all
+ code inside Visual Haskell. It is possible that in future
+ releases we may be able to relax this tight coupling between
+ Visual Haskell and the bundled GHC.</para>
+
+ <para>Please note that future releases of Visual
+ Haskell will update the compiler, and hence the
+ packages, and so may break your code. Also note that because
+ the bundled GHC is not a released version, it may have bugs and
+ quirks itself: please report them as usual to
+ <email>glasgow-haskell-bugs@haskell.org</email>.</para>
+ </listitem>
+
+ <listitem>
+ <para>We're not making source code for the plugin generally
+ available at this time, due to licensing restrictions on the
+ Visual Studio APIs that the plugin uses (for more
+ information see <ulink
+ url="http://msdn.microsoft.com/vstudio/extend/">Visual Studio
+ Extensibility Center</ulink>). If you're interested in
+ contributing to Visual Haskell, please get in touch with the
+ authors.</para>
+ </listitem>
+ </itemizedlist>
+ </section>
+ </section>
+
+ <section id="sec-bugs">
+ <title>Getting support, reporting bugs</title>
+ <para>Please report bugs to
+ <email>glasgow-haskell-bugs@haskell.org</email> (subscribe <ulink url="http://www.haskell.org/mailman/listinfo/glasgow-haskell-bugs">here</ulink>), clearly indicating
+ that your bug report relates to Visual Haskell, and giving as much
+ information as possible so that we can reproduce the bug. Even if
+ you can't reproduce the bug reliably, it is still useful to report
+ what you've seen.</para>
+
+ <para>For help and support, use the
+ <email>glasgow-haskell-users@haskell.org</email> (subscribe <ulink
+ url="http://www.haskell.org/mailman/listinfo/glasgow-haskell-users">here</ulink>) mailing list.</para>
</section>
- <section id="sec-using">
- <title>Using Visual Haskell</title>
+ <section id="sec-license">
+ <title>License</title>
- <section>
- <title>Overview of features</title>
-
- <para>The following features are provided in the Visual Studio editor
- when editing Haskell code:</para>
-
- <itemizedlist>
- <listitem>
- <para>Automatic checking of code as you type, and visual indication
- of parse errors, scoping errors and type errors.</para>
- </listitem>
-
- <listitem>
- <para>Quick info: hovering the mouse over an identifier pops up
- an information box, including the type of the identifier.</para>
- </listitem>
-
- <listitem>
- <para>A drop-down bar at the top of the editing window lists the
- top-level declarations in the module, and allows quick navigation
- to a declaration.</para>
- </listitem>
-
- <listitem>
- <para>Name completion for identifiers in scope: press Ctrl+Space
- after a partial identifier to see the completions.</para>
- </listitem>
-
- <listitem>
- <para>Go to declaration: right clicking on an identifier and
- selecting "Go to declaration" will jump the cursor to the
- declaration of the identifier. This works for locally-defined
- identifiers and those defined in another module of the project; it
- does not work for library functions currently.</para>
- </listitem>
- </itemizedlist>
-
- <para>The following features are provided by the project system for
- constructing Haskell projects:</para>
+ <blockquote>
+ <para>Copyright © Microsoft Corporation. All rights reserved.</para>
+ <para>Copyright © The University of Glasgow. All rights reserved.</para>
+ <para>Copyright © Krasimir Angelov. All rights reserved.</para>
- <itemizedlist>
- <listitem>
- <para>Multi-module Haskell projects are fully supported, based on the
- <ulink url="http://www.haskell.org/cabal">Cabal</ulink>
- infrastructure. A project in Visual Haskell <emphasis>is</emphasis>
- a Cabal package, and vice-versa. A Visual Studio project can be
- taken to a machine without Visual Haskell and built/installed as a
- normal Cabal package, and an existing Cabal package can be edited
- directly in Visual Haskell<footnote><para>This works as long as the
- Cabal package is using Cabal's simple build system; Cabal
- packages using their own build systems cannot be edited in Visual
- Haskell.</para>
- </footnote>.</para>
- </listitem>
-
- <listitem>
- <para>Editing of most of the package meta-data is supported through
- the project property pages.</para>
- </listitem>
-
- <listitem>
- <para>The interactive editing features work across multiple modules in
- a project. When one module is edited, changes are automatically
- propagated to dependent modules, even if the edited module has not yet
- been saved.</para>
- </listitem>
-
- <listitem>
- <para>Building is supported through the Cabal build system, and build
- errors are communicated back to the editor and placed in the task
- list. Use any of the Visual Studio build commands (e.g. Build
- Project from the context menu on the project, or Ctrl-Shift-B to
- build the whole solution).</para>
- </listitem>
+ <para>Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:</para>
+ <itemizedlist>
+ <listitem>
+ <para>Redistributions of source code must retain the above
+ copyright notice, this list of conditions and the following
+ disclaimer.</para>
+ </listitem>
+
+ <listitem>
+ <para>Redistributions in binary form must reproduce the above
+ copyright notice, this list of conditions and the following
+ disclaimer in the documentation and/or other materials provided
+ with the distribution.</para>
+ </listitem>
+
+ <listitem>
+ <para>The names of the copyright holders may not be used to endorse
+ or promote products derived from this software without specific
+ prior written permission.</para>
+ </listitem>
</itemizedlist>
-
- <para>Additionally, Visual Haskell is bundled with a large collection of
- documentation: the GHC manual, the hierarchical libraries reference, and
- other material all of which can be browsed within Visual Studio
- itself.</para>
- </section>
- <section>
- <title>Getting Started</title>
-
- <para>After installing Visual Haskell, start up Visual Studio as you
- would normally, and observe that on the splash screen where it lists
- the supported languages you should now see an icon for Visual
- Haskell (if you don't see this, something has gone wrong... please let
- us know).</para>
-
- <para>Firstly, take a look at the bundled documentation. Go to
- Help-&gt;Contents, and you should see the &ldquo;Visual Haskell Help
- Collection&rdquo;, which contains a large collection of GHC and
- Haskell-related documentaiton, including this document.</para>
-
- <para>To start using Visual Haskell right away, create a new
- project (File-&gt;New-&gt;Project...). Select one of the Haskell
- project types (Console Application or Library Package), and hit Ok.
- The project will be created for you, and an example module
- added: <literal>Main.hs</literal> for an application, or
- <literal>Module1.hs</literal> for a library.</para>
-
- <para>You can now start adding code to
- <literal>Main.hs</literal>, or adding new modules. To add a new
- module, right-click on the <literal>src</literal> directory, and
- select Add-&gt;New Item. Visual Haskell supports hierarchical
- modules too: you can add new folders using the same Add menu to
- create new nodes in the hierarchy.</para>
-
- <para>If you have any errors in your code, they will be underlined with
- a red squiggly line. Select the Tasks window (usually a tab near the
- bottom of the Visual Studio window) to see the error messages, and
- click on an error message to jump to it in the editor.</para>
-
- <para>To build the program, hit Ctrl-Shift-B, or select one of the
- options from the Build menu.</para>
- </section>
+ <para>THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ COPYRIGHT HOLDERS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ POSSIBILITY OF SUCH DAMAGE.</para>
+ </blockquote>
+ </section>
+
+ </section>
+
+ <section id="sec-using">
+ <title>Using Visual Haskell</title>
<section>
- <title>Editing Haskell code</title>
-
- <para>(ToDo: more detail here)</para>
-
- <para>Your module must be plain Haskell (<literal>.hs</literal>) for the interactive features to
- fully work. If your module is pre-processed with CPP or Literate
- Haskell, then Visual Haskell will only check the module when it is
- saved; between saves the source will not be checked for errors and
- the type information will not be updated. If the source file is
- pre-processed with Happy or another pre-processor, then you may have
- to build the project before the type information will be updated
- (because the pre-processor is only run as part of the build
- process). Pre-processed source files work fine in a multi-module
- setting; you can have modules which depend on a pre-processed module
- and full interactive checking will still be available in those
- modules.</para>
-
- <para>Because Visual Haskell is using GHC as a backend for its
- interactive editing features, it supports the full GHC language,
- including all extensions.</para>
- </section>
+ <title>Overview of features</title>
- <section>
- <title>Using Projects</title>
- <para>(ToDo: more detail here)</para>
- </section>
+ <para>The following features are provided in the Visual Studio editor
+ when editing Haskell code:</para>
+
+ <itemizedlist>
+ <listitem>
+ <para>Automatic checking of code as you type, and visual indication
+ of parse errors, scoping errors and type errors.</para>
+ </listitem>
+
+ <listitem>
+ <para>Quick info: hovering the mouse over an identifier pops up
+ an information box, including the type of the identifier.</para>
+ </listitem>
+
+ <listitem>
+ <para>A drop-down bar at the top of the editing window lists the
+ top-level declarations in the module, and allows quick navigation
+ to a declaration.</para>
+ </listitem>
+
+ <listitem>
+ <para>Name completion for identifiers in scope: press Ctrl+Space
+ after a partial identifier to see the completions.</para>
+ </listitem>
+
+ <listitem>
+ <para>Go to declaration: right clicking on an identifier and
+ selecting "Go to declaration" will jump the cursor to the
+ declaration of the identifier. This works for locally-defined
+ identifiers and those defined in another module of the project; it
+ does not work for library functions currently.</para>
+ </listitem>
+ </itemizedlist>
+ <para>The following features are provided by the project system for
+ constructing Haskell projects:</para>
+
+ <itemizedlist>
+ <listitem>
+ <para>Multi-module Haskell projects are fully supported, based on the
+ <ulink url="http://www.haskell.org/cabal">Cabal</ulink>
+ infrastructure. A project in Visual Haskell <emphasis>is</emphasis>
+ a Cabal package, and vice-versa. A Visual Studio project can be
+ taken to a machine without Visual Haskell and built/installed as a
+ normal Cabal package, and an existing Cabal package can be edited
+ directly in Visual Haskell<footnote><para>This works as long as the
+ Cabal package is using Cabal's simple build system; Cabal
+ packages using their own build systems cannot be edited in Visual
+ Haskell.</para>
+ </footnote>.</para>
+ </listitem>
+
+ <listitem>
+ <para>Editing of most of the package meta-data is supported through
+ the project property pages.</para>
+ </listitem>
+
+ <listitem>
+ <para>The interactive editing features work across multiple modules in
+ a project. When one module is edited, changes are automatically
+ propagated to dependent modules, even if the edited module has not yet
+ been saved.</para>
+ </listitem>
+
+ <listitem>
+ <para>Building is supported through the Cabal build system, and build
+ errors are communicated back to the editor and placed in the task
+ list. Use any of the Visual Studio build commands (e.g. Build
+ Project from the context menu on the project, or Ctrl-Shift-B to
+ build the whole solution).</para>
+ </listitem>
+
+ </itemizedlist>
+
+ <para>Additionally, Visual Haskell is bundled with a large collection of
+ documentation: the GHC manual, the hierarchical libraries reference, and
+ other material all of which can be browsed within Visual Studio
+ itself.</para>
+ </section>
+
+ <section>
+ <title>Getting Started</title>
+
+ <para>After installing Visual Haskell, start up Visual Studio as you
+ would normally, and observe that on the splash screen where it lists
+ the supported languages you should now see an icon for Visual
+ Haskell (if you don't see this, something has gone wrong... please let
+ us know).</para>
+
+ <para>Firstly, take a look at the bundled documentation. Go to
+ Help-&gt;Contents, and you should see the &ldquo;Visual Haskell Help
+ Collection&rdquo;, which contains a large collection of GHC and
+ Haskell-related documentaiton, including this document.</para>
+
+ <para>To start using Visual Haskell right away, create a new
+ project (File-&gt;New-&gt;Project...). Select one of the Haskell
+ project types (Console Application or Library Package), and hit Ok.
+ The project will be created for you, and an example module
+ added: <literal>Main.hs</literal> for an application, or
+ <literal>Module1.hs</literal> for a library.</para>
+
+ <para>You can now start adding code to
+ <literal>Main.hs</literal>, or adding new modules. To add a new
+ module, right-click on the <literal>src</literal> directory, and
+ select Add-&gt;New Item. Visual Haskell supports hierarchical
+ modules too: you can add new folders using the same Add menu to
+ create new nodes in the hierarchy.</para>
+
+ <para>If you have any errors in your code, they will be underlined with
+ a red squiggly line. Select the Tasks window (usually a tab near the
+ bottom of the Visual Studio window) to see the error messages, and
+ click on an error message to jump to it in the editor.</para>
+
+ <para>To build the program, hit Ctrl-Shift-B, or select one of the
+ options from the Build menu.</para>
+ </section>
+
+ <section>
+ <title>Editing Haskell code</title>
+
+ <para>(ToDo: more detail here)</para>
+
+ <para>Your module must be plain Haskell (<literal>.hs</literal>) for
+ the interactive features to fully work. If your module is
+ pre-processed with CPP or Literate Haskell, then Visual Haskell will
+ only check the module when it is saved; between saves the source will
+ not be checked for errors and the type information will not be
+ updated. If the source file is
+ pre-processed with Happy or another pre-processor, then you may have
+ to build the project before the type information will be updated
+ (because the pre-processor is only run as part of the build process).
+ Pre-processed source files work fine in a multi-module setting; you
+ can have modules which depend on a pre-processed module and full
+ interactive checking will still be available in those modules.</para>
+
+ <para>Because Visual Haskell is using GHC as a backend for its
+ interactive editing features, it supports the full GHC language,
+ including all extensions.</para>
</section>
- </article>
+
+ <section>
+ <title>Using Projects</title>
+ <para>(ToDo: more detail here)</para>
+ </section>
+
+ </section>
+</article>