Author:halw

Date:2009-01-28T16:53:41.000000Z


git-svn-id: https://svn.eiffel.com/eiffel-org/trunk@173 abb3cda0-5349-4a8f-a601-0c33ac3a8c38
This commit is contained in:
halw
2009-01-28 16:53:41 +00:00
parent 2e66b008a7
commit 0b74232240
62 changed files with 276 additions and 185 deletions

View File

@@ -58,17 +58,17 @@ To move a cluster from the right column to the left one, click it to select it,
You can play with moving a couple of clusters back and forth, but for this Tour we'll want to generate everything, including EiffelBase, so make sure that in the end all clusters appear in the right column, as on the last figure. Then click <code>Next</code>.
==Generating Metatags from Indexing entries==
==Generating Metatags from Note entries==
The next step of the documentation wizard asks you to select indexing entries:
The next step of the documentation wizard asks you to select Note entries:
[[Image:index-39]]
Eiffel classes, as you know, may start with an <code>Indexing</code> entry that enables class authors to include documentary information in any category they like. It is standard (and part of the official style guidelines) to include at the very least an entry of the form <code>description:</code> <code>Descriptive text</code> in every class. The earlier displays of class <code>LIST</code> showed that entry, which read " <code>Sequential lists, without commitment to a particular representation</code>".
Eiffel classes, as you know, may start with an <code>note</code> entry that enables class authors to include documentary information in any category they like. It is standard (and part of the official style guidelines) to include at the very least an entry of the form <code>description:</code> <code>Descriptive text</code> in every class. The earlier displays of class <code>LIST</code> showed that entry, which read " <code>Sequential lists, without commitment to a particular representation</code>".
You may have noted that the purpose of Eiffel's <code>Indexing</code> clauses is, conceptually, similar to that of '''metatags''' in HTML. Metatags carry information which Web page visitors do not normally see in the browser; this information is available, however, to search engines and other tools that explore and classify Web pages. So it seems quite appropriate to generate metatags from <code>Indexing</code> entries.
You may have noted that the purpose of Eiffel's <code>note</code> clauses is, conceptually, similar to that of '''metatags''' in HTML. Metatags carry information which Web page visitors do not normally see in the browser; this information is available, however, to search engines and other tools that explore and classify Web pages. So it seems quite appropriate to generate metatags from <code>note</code> entries.
The dialog illustrated in the last figure lets you select the entries you wish to transform into metatags. It appears only if you have selected an HTML filter. It lists all the <code>Indexing</code> tags found anywhere in the system; those on the right will be retained for metatags. Initially the <code>Exclude</code> list on the left contains three tags conventionally used -- at Eiffel Software and other Eiffel sites -- for interfacing with configuration management tools, and hence of internal interest only.
The dialog illustrated in the last figure lets you select the entries you wish to transform into metatags. It appears only if you have selected an HTML filter. It lists all the <code>note</code> tags found anywhere in the system; those on the right will be retained for metatags. Initially the <code>Exclude</code> list on the left contains three tags conventionally used -- at Eiffel Software and other Eiffel sites -- for interfacing with configuration management tools, and hence of internal interest only.
There is no need to change the default selection, so just click <code>Next</code>.

View File

@@ -2,10 +2,10 @@
[[Property:weight|6]]
[[Property:uuid|386c40f1-3427-cf1c-1043-46aeac1bc3c5]]
It is possible in EiffelStudio to customize some properties of [[Formatted information about compiled classes and features|class text views]] (other than basic texts) displayed in the editor or class and feature tabs of the context tool. Besides [[Changing texts display|graphical appearance]], you may modify:
* the order of feature clauses.
* the order of <code>feature</code> clauses.
* the type of callers and suppliers displayed in the corresponding views.
* the views that are selected by default.
* the indexing clauses that should not be displayed.
* the <code>note</code> clauses that should not be displayed.
These properties are set in the [[EiffelStudio preferences]]. You can modify them in the [[Preference window overview|preferences window]]. To open this window, select '''Preferences...''' in the '''Tool''' menu. Then select the "Context tool" sub-category of the "Tools" category in the preferences tree. Click then on a preference on the right to modify its value.
Click on '''save and exit''' to complete the changes.

View File

@@ -4,7 +4,7 @@
==Annotations==
Annotations may be applicable to:
* An individual class or feature. In this case the annotation figures in the class text, as part of an Eiffel "note" clause ("indexing" is still supported, it depends on which syntax level users choose).
* An individual class or feature. In this case the annotation figures in the class text, as part of an Eiffel <code>note</code> clause (<code>indexing</code> is still supported, it depends on which syntax level users choose).
* A target, library or cluster. In this case the annotation figures in the associated ECF file; EiffelStudio provides support for entering it through a Information (EIS) Tool.
{{seealso|<br/>
[[Information Tool|Information Tool]] }}

View File

@@ -2,5 +2,5 @@
[[Property:weight|1]]
[[Property:uuid|780757a6-f04a-97d4-5069-d22328e6492f]]
Many of EiffelStudio's properties may be customized. A tool has been designed to help you set your preferences. <br/>
In this section, you will find a [[Preference window overview|description of this tool]] . You will also find [[Preferences Reference|an explanation of the different properties]] that may be modified by using it.
In this section, you will find a [[Preference window overview|description of this tool]]. You will also find [[Preferences Reference|an explanation of the different properties]] that may be modified by using it.

View File

@@ -2,8 +2,11 @@
[[Property:weight|1]]
[[Property:uuid|52878474-02fd-c68f-0953-a785cac469c8]]
The preferences dialog provide the main table, a filter bar, a the bottom tool bar.
[[Image:dialogs-and-wizards--preferences-dialog]]
The table is used to display a grid with the preferences displayed in a tree or flat view.
There are several kinds of preferences:
@@ -13,6 +16,8 @@ There are several kinds of preferences:
* Shortcut preferences : edit the value cell, and press the wanted shortcuts..
* Other preferences : They will be modified by typing their value directly into an editable text field.
If there is no message stating you need to restart EiffelStudio, changes will be taken into account immediately.
{{tip|below the table, you will find a text field with the internal name of the preference (for instance: ''editor.eiffel.auto-complete_...''). }}

View File

@@ -2,5 +2,5 @@
[[Property:weight|-1]]
[[Property:uuid|9899c28c-c7c9-8d0d-1e83-e0d1741c7f3c]]
EiffelStudio editor can detect many keywords and trigger an automatic syntax completion. <br/>
This section of the documentation contains a description of [[Keywords automatic completion preferences|what can be customized]] . You will also find an [[Keyword completion customization|explanation of the syntax]] to be used in completion preferences, [[Default values for keyword completion preferences|and their default values]] .
This section of the documentation contains a description of [[Keywords automatic completion preferences|what can be customized]]. You will also find an [[Keyword completion customization|explanation of the syntax]] to be used in completion preferences, [[Default values for keyword completion preferences|and their default values]].

View File

@@ -4,7 +4,7 @@
This document describes the syntax used to customize keyword automatic completion. <br/>
[[Keywords automatic completion preferences|Four strings]] are used to define the completion of a keyword. The rules are the same for all of them:
* These strings will be inserted right after the keyword. The key that triggers the automatic completion will not be taken into account, i.e. no space or "new line" character will be inserted even though you press Return or Space. The strings should therefore begin with a space or a "new line" character (see below for "newline").
* These strings will be inserted right after the keyword. The key that triggers the automatic completion will not be taken into account, i.e. no space or "new line" character will be inserted even though you press Space or Return. The strings should therefore begin with a space or a "new line" character (see below for "newline").
* Two reserved words will allow you to position the cursor and to indent the text properly. Insert the word ''$cursor$'' in the string where you want the cursor to be moved once the completion is finished. Insert the word ''$indent$'' where you want to copy as many blank spaces as there were on the line where the keyword was typed.

View File

@@ -60,15 +60,15 @@ A directory is associated with each keyword. These directories contains six item
* Use default autocomplete: If this is set to True, the next preferences will be ignored and the default completion scheme will be used. Otherwise, the automatic completion will use the user-defined strings described below.
* Customized autocomplete (Return after keyword was typed): This [[Keyword completion customization|string]] defines what will be inserted as you press Return just after typing the keyword if you chose not to use the [[Default values for keyword completion preferences|default value]] (see Use default autocomplete above).
* Customized autocomplete (Return after keyword was typed): This [[Keyword completion customization|string]] defines what will be inserted as you press Return just after typing the keyword if you chose not to use the [[Default values for keyword completion preferences|default value]] (see Use default autocomplete above).
* Customized autocomplete (Space after keyword was typed): This [[Keyword completion customization|string]] defines what will be inserted as you press Space just after typing the keyword if you chose not to use the [[Default values for keyword completion preferences|default value]] (see Use default autocomplete above).
* Customized autocomplete (Space after keyword was typed): This [[Keyword completion customization|string]] defines what will be inserted as you press Space just after typing the keyword if you chose not to use the [[Default values for keyword completion preferences|default value]] (see Use default autocomplete above).
* Customized autocomplete (Return, other cases): This [[Keyword completion customization|string]] defines what will be inserted as you press Return after a keyword which had been previously typed. It is effective only if you chose not to use the [[Default values for keyword completion preferences|default value]] (see Use default autocomplete above).
* Customized autocomplete (Return, other cases): This [[Keyword completion customization|string]] defines what will be inserted as you press Return after a keyword which had been previously typed. It is effective only if you chose not to use the [[Default values for keyword completion preferences|default value]] (see Use default autocomplete above).
* Customized autocomplete (Space, other cases): This [[Keyword completion customization|string]] defines what will be inserted as you press Space after a keyword which had been previously typed. It is effective only if you chose not to use the [[Default values for keyword completion preferences|default value]] (see Use default autocomplete above).
* Customized autocomplete (Space, other cases): This [[Keyword completion customization|string]] defines what will be inserted as you press Space after a keyword which had been previously typed. It is effective only if you chose not to use the [[Default values for keyword completion preferences|default value]] (see Use default autocomplete above).
The syntax used in the four last item is described in [[Keyword completion customization|Keyword completion customization]] . [[Default values for keyword completion preferences|Default values]] are accessible in Keyword completion default values.
The syntax used in the four last item is described in [[Keyword completion customization|Keyword completion customization]]. [[Default values for keyword completion preferences|Default values]] are accessible in Keyword completion default values.

View File

@@ -1,16 +1,18 @@
[[Property:title|Keyboard shortcuts preferences]]
[[Property:weight|2]]
[[Property:uuid|1fbfc5fe-cbaf-9a55-cd5c-672f9b7a3e24]]
Some of the keyboard shortcuts used in the editor can be customized. A subfolder of the"Keyboard Shortcuts" folder in the editor preferences corresponds to each of these customizable shortcuts. There are four values to set to define a shortcut: which key must be pressed and whether Ctrl, Alt or Shift have to be pressed at the same time. You will find a combination of all in each shortcut subfolder. The customizable shortcuts are:
* Autocomplete: Shortcut to trigger the feature call automatic completion. The default key combination is "Ctrl+Space".
* Class name autocomplete: Shortcut to trigger the class name automatic completion. The default key combination is "Ctrl+Shift+Space".
* Search selection: Shortcut to launch a search of the currently selected item. If there is no selected item, the editor will look for the next occurrence of the last searched pattern. The default key combination for this command is "F3".
* Search again: Shortcut to move to the next occurrence of the searched pattern. If the shortcut is the same as for Search Selection, the effect of the command will be to search for the next occurrence of the currently searched pattern unless something else is selected in the editor. In that case, the editor will look for the next occurrence of the selected text. The default key combination for this command is"F3".
* Search backwards: Shortcut to move to the previous occurrence of the searched pattern. The default key combination for this command is "Shift+F3".
* Show search panel: Shortcut to make the search panel appear if it is not displayed and to give the focus to the "Search for" field. The default key combination for this command is "Ctrl+F".
* Show search and replace panel: Shortcut to make the search panel with the"Replace with" field appear if it is not displayed. The focus will be given to the "Search for" field. The default key combination for this command is"Ctrl+H".
Some of the keyboard shortcuts used in the editor can be customized. A subfolder of the "Keyboard Shortcuts" folder in the editor preferences corresponds to each of these customizable shortcuts. There are four values to set to define a shortcut: which key must be pressed and whether <code>CTRL</code>, <code>ALT</code> or <code>SHIFT</code> have to be pressed at the same time. You will find a combination of all in each shortcut subfolder. The customizable shortcuts are:
* Autocomplete: Shortcut to trigger the feature call automatic completion. The default key combination is <code>CTRL</code>+<code>SPACE</code>.
* Class name autocomplete: Shortcut to trigger the class name automatic completion. The default key combination is <code>CTRL</code>+<code>SHIFT</code>+<code>SPACE</code>.
* Search selection: Shortcut to launch a search of the currently selected item. If there is no selected item, the editor will look for the next occurrence of the last searched pattern. The default key combination for this command is <code>F3</code>.
* Search again: Shortcut to move to the next occurrence of the searched pattern. If the shortcut is the same as for Search Selection, the effect of the command will be to search for the next occurrence of the currently searched pattern unless something else is selected in the editor. In that case, the editor will look for the next occurrence of the selected text. The default key combination for this command is <code>F3</code>.
* Search backwards: Shortcut to move to the previous occurrence of the searched pattern. The default key combination for this command is <code>SHIFT</code>+<code>F3</code>.
* Show search panel: Shortcut to make the search panel appear if it is not displayed and to give the focus to the "Search for" field. The default key combination for this command is <code>CTRL</code>+<code>F</code>.
* Show search and replace panel: Shortcut to make the search panel with the "Replace with" field appear if it is not displayed. The focus will be given to the "Search for" field. The default key combination for this command is <code>CTRL</code>+<code>H</code>.
{{note|You should avoid using key combinations made of only <code>ALT</code> and another key as they are reserved for menu shortcuts. }}
{{note|You should avoid using key combinations made of only "Alt" and another key as they are reserved for menu shortcuts. }}
{{Tip|You may use combinations made of only one key to create very fast shortcuts, for example with the function keys. To know what string corresponds to a given key, you can look up in the EV_KEY_CONSTANTS of EiffelVision2.The `key_strings' table links keys with a string representation. }}

View File

@@ -1,7 +1,9 @@
[[Property:title|General Preferences]]
[[Property:weight|0]]
[[Property:uuid|cc42c410-bec5-4a4e-c45f-e005213cb260]]
This category gathers non graphical and general preferences that are not related to a tool in particular. These preferences are: <br/>
General preferences are non-graphical preferences and preferences that are not related to a particular tool. These preferences are:
{| border="1"
|-
| '''Label in the preferences window'''

View File

@@ -1,5 +1,5 @@
[[Property:title|Interface]]
[[Property:weight|1]]
[[Property:uuid|e0fe1870-cf02-4ca9-e46a-e69c8db1ed48]]
This section of the documentation describes preferences that belong to the "Interface" category. This group contains two kinds of properties, some related to the preferences for the EiffelStudio [[Development Window Preferences|development window]] , others that define which [[Discardable dialogs|dialog windows]] should or should not be displayed. You can also decide to use animated icons in the status bars whenever possible (that is, during compilations and executions).
This section of the documentation describes preferences that belong to the "Interface" category. This group contains two kinds of properties, some related to the preferences for the EiffelStudio [[Development Window Preferences|development window]], others that define which [[Discardable dialogs|dialog windows]] should or should not be displayed. You can also decide to use animated icons in the status bars whenever possible (that is, during compilations and executions).

View File

@@ -2,7 +2,8 @@
[[Property:weight|-9]]
[[Property:uuid|b30f3c56-dbeb-06ac-4775-30a5f1d56966]]
The ancestors view [[Image:class-ancestors-icon]] displays all the classes from which the current class inherits, directly or not, using a tree-like indented layout. <br/>
It is available through the '''Class''' tab of the [[EiffelStudio window overview|context tool]] .
It is available through the '''Class''' tab of the [[EiffelStudio window overview|context tool]].
{{seealso|<br/>
[[Descendants|Descendants]] }}

View File

@@ -2,7 +2,8 @@
[[Property:weight|-5]]
[[Property:uuid|cbe3647a-ef50-3596-ccee-89d7c16c5d82]]
The attributes view [[Image:class-features-attribute-icon]] displays all the attributes of the current class, including inherited attributes. <br/>
It is available through the '''Class''' tab of the [[EiffelStudio window overview|context tool]] .
It is available through the '''Class''' tab of the [[EiffelStudio window overview|context tool]].
{{seealso|<br/>
[[Routines|Routines]] }}

View File

@@ -1,13 +1,16 @@
[[Property:title|Class formatters: Basic text view]]
[[Property:weight|-14]]
[[Property:uuid|057df030-7dad-d0f6-7d13-c18021afa78b]]
Basic text view [[Image:view-editor-icon]] is the only editable view; this is why it is only available through the [[EiffelStudio Editor|editor]] .
Basic text view [[Image:view-editor-icon]] is the only editable view; this is why it is only available through the [[EiffelStudio Editor|editor]].
[[Image:class-mini-format-bar]]
This is also the view selected by default when the editor is opened for the first time.
In this view, most of the development objects are [[Pick-and-drop mechanism|clickable]] , except for special cases like assertions, anchored types, identifiers within a comment line... for which the [[Clickable view|clickable view]] might be needed.
{{note|The generated text is not editable, but it is compilable. This view is not available to .NET classes which are imported through by means of an assembly. This is because the assembly .exe or .dll exposes only the interface methods and therefore is no implementation to display. Such classes may be viewed, in a clickable format using the Contract View or Interface View. }}
This is also the view selected by default when the editor is opened for the first time.
In this view, most of the development objects are [[Pick-and-drop mechanism|clickable]], except for special cases like assertions, anchored types, identifiers within a comment line... for which the [[Clickable view|clickable view]] might be needed.
{{note|The generated text is not editable, but it is compilable. This view is not available to .NET classes which are imported through by means of an assembly. This is because the assembly '''.exe''' or '''.dll''' exposes only the interface methods and therefore is no implementation to display. Such classes may be viewed, in a clickable format using the Contract View or Interface View. }}
{{seealso|<br/>

View File

@@ -2,7 +2,7 @@
[[Property:weight|1]]
[[Property:uuid|a9f7327c-42dd-43fc-ea30-11c9482386e9]]
The external view [[Image:class-features-external-icon]] displays all the external features of the current class. <br/>
It is available through the '''Class''' tab of the [[EiffelStudio window overview|context tool]] .
It is available through the '''Class''' tab of the [[EiffelStudio window overview|context tool]].

View File

@@ -1,11 +1,14 @@
[[Property:title|Class formatters: Flat view]]
[[Property:weight|-12]]
[[Property:uuid|14ad347a-db72-1194-346b-752e1cd0dc7d]]
The flat view [[Image:view-flat-icon]] displays all the features for the current class, i.e. including both written-in and inherited features; it is available either through the [[EiffelStudio Editor|editor]] or through the '''Class''' tab of the [[EiffelStudio window overview|context tool]] . This is also the only view where [[Breakpoints|breakpoints]] are displayed.
The flat view [[Image:view-flat-icon]] displays all the features for the current class, i.e. including both written-in and inherited features; it is available either through the [[EiffelStudio Editor|editor]] or through the '''Class''' tab of the [[EiffelStudio window overview|context tool]]. This is also the only view where [[Breakpoints|breakpoints]] are displayed.
{{warning|For classes with many [[Ancestors|ancestors]] , computation of the flat view may require a few seconds. }}
{{note|This view is not available to .NET classes which are imported through by means of an assembly. This is because the assembly .exe or .dll exposes only the interface methods and therefore is no implementation to display. Such classes may be viewed, in a clickable format using the Contract View or Interface View. }}
{{warning|For classes with many [[Ancestors|ancestors]], computation of the flat view may require a few seconds. }}
{{note|This view is not available to .NET classes which are imported through by means of an assembly. This is because the assembly '''.exe''' or '''.dll''' exposes only the interface methods and therefore is no implementation to display. Such classes may be viewed, in a clickable format using the Contract View or Interface View. }}
{{seealso|<br/>
[[Flat Contract view|Flat Contract view]] }}

View File

@@ -1,9 +1,9 @@
[[Property:title|Clickable view]]
[[Property:weight|-13]]
[[Property:uuid|8ddd0d2a-d4db-b0b6-8ee1-63e205a53dcc]]
The clickable view [[Image:view-clickable-icon]] allows to [[Pick-and-drop mechanism|pick]] every class or feature name in the class text and is available either through the [[EiffelStudio Editor|editor]] or through the '''Class''' tab of the [[EiffelStudio window overview|context tool]] .
The clickable view [[Image:view-clickable-icon]] allows you to [[Pick-and-drop mechanism|pick]] every class or feature name in the class text and is available either through the [[EiffelStudio Editor|editor]] or through the '''Class''' tab of the [[EiffelStudio window overview|context tool]].
{{note|This view is not available to .NET classes which are imported through by means of an assembly. This is because the assembly .exe or .dll exposes only the interface methods and therefore is no implementation to display. Such classes may be viewed, in a clickable format using the Contract View or Interface View. }}
{{note|This view is not available to .NET classes which are imported through by means of an assembly. This is because the assembly '''.exe''' or '''.dll''' exposes only the interface methods and therefore is no implementation to display. Such classes may be viewed, in a clickable format using the Contract View or Interface View. }}

View File

@@ -1,8 +1,9 @@
[[Property:title|Clients]]
[[Property:weight|-7]]
[[Property:uuid|d5d21d9f-c88b-c1b3-d6fe-89de6487f29d]]
The clients view [[Image:class-clients-icon]] displays all the classes which are using features of the current class, and thus rely on its [[Flat Contract view|interface]] . <br/>
It is available through the '''Class''' tab of the [[EiffelStudio window overview|context tool]] .
The clients view [[Image:class-clients-icon]] displays all the classes which are using features of the current class, and thus rely on its [[Flat Contract view|interface]]. <br/>
It is available through the '''Class''' tab of the [[EiffelStudio window overview|context tool]].
{{seealso|<br/>
[[Suppliers|Suppliers]] <br/>

View File

@@ -1,7 +1,7 @@
[[Property:title|Contract view]]
[[Property:weight|-11]]
[[Property:uuid|e8bbc475-d7f8-baa6-aba8-021c0e05c4b6]]
The contract view [[Image:view-contracts-icon]] displays the contracts of all written-in features of the current class. It is available either through the [[EiffelStudio Editor|editor]] or through the '''Class''' tab of the [[EiffelStudio window overview|context tool]] .
The contract view [[Image:view-contracts-icon]] displays the contracts of all written-in features of the current class. It is available either through the [[EiffelStudio Editor|editor]] or through the '''Class''' tab of the [[EiffelStudio window overview|context tool]].
{{seealso|<br/>
[[Flat Contract view|Flat contract view]] }}

View File

@@ -2,7 +2,7 @@
[[Property:weight|-2]]
[[Property:uuid|eb428ddf-d2dd-de8f-abc8-fb95970d92bd]]
The creators view [[Image:class-features-creator-icon]] displays all the creation procedure signatures of the current class. <br/>
It is available through the '''Class''' tab of the [[EiffelStudio window overview|context tool]] .
It is available through the '''Class''' tab of the [[EiffelStudio window overview|context tool]].

View File

@@ -2,7 +2,7 @@
[[Property:weight|-1]]
[[Property:uuid|fd1bcb31-75a3-1bcb-9d4d-e9d006c5d851]]
The deferred view [[Image:class-features-deferred-icon]] displays all the deferred features of the current class. <br/>
It is available through the '''Class''' tab of the [[EiffelStudio window overview|context tool]] .
It is available through the '''Class''' tab of the [[EiffelStudio window overview|context tool]].

View File

@@ -2,7 +2,8 @@
[[Property:weight|-8]]
[[Property:uuid|c3f44d3d-a3ea-9776-9626-1ecc090fd513]]
The descendants view [[Image:class-descendents-icon]] displays all the classes which inherit from the current class,directly or not, using a tree-like indented layout. <br/>
It is available through the '''Class''' tab of the [[EiffelStudio window overview|context tool]] .
It is available through the '''Class''' tab of the [[EiffelStudio window overview|context tool]].
{{seealso|<br/>
[[Ancestors|Ancestors]] }}

View File

@@ -2,7 +2,7 @@
[[Property:weight|2]]
[[Property:uuid|af99ce57-a44d-6cfa-a933-89993e5d845c]]
The exported view [[Image:class-features-exported-icon]] displays all the features of the current class that all other classes may call. <br/>
It is available through the '''Class''' tab of the [[EiffelStudio window overview|context tool]] .
It is available through the '''Class''' tab of the [[EiffelStudio window overview|context tool]].

View File

@@ -1,10 +1,12 @@
[[Property:title|Flat Contract view]]
[[Property:weight|-10]]
[[Property:uuid|dbbbb655-aa38-849f-62c5-e1bda6f83285]]
The Flat Contract view [[Image:view-flat-contracts-icon]] displays the contracts of all written-in and inherited features of the current class. It is available either through the [[EiffelStudio Editor|editor]] or through the '''Class''' tab of the [[EiffelStudio window overview|context tool]] .
The Flat Contract view [[Image:view-flat-contracts-icon]] displays the contracts of all written-in and inherited features of the current class. It is available either through the [[EiffelStudio Editor|editor]] or through the '''Class''' tab of the [[EiffelStudio window overview|context tool]].
{{warning|For classes with many [[Ancestors|ancestors]], computation of the Flat Contract view may require a few seconds. }}
{{seealso|<br/>
[[Class formatters: Flat view|Flat view]] <br/>
[[Contract view|Contract view]] }}

View File

@@ -2,7 +2,7 @@
[[Property:weight|-3]]
[[Property:uuid|74a4cf46-cc07-d7b8-bce4-b8bf78b72b99]]
The invariants view [[Image:class-features-invariant-icon]] displays all the invariants of the current class. <br/>
It is available through the '''Class''' tab of the [[EiffelStudio window overview|context tool]] .
It is available through the '''Class''' tab of the [[EiffelStudio window overview|context tool]].

View File

@@ -2,7 +2,8 @@
[[Property:weight|-4]]
[[Property:uuid|3b0f4d50-3a62-37ca-fa36-20c606abb9e3]]
The routines view [[Image:class-features-routine-icon]] displays all the routine signatures of the current class, including inherited routines. <br/>
It is available through the '''Class''' tab of the [[EiffelStudio window overview|context tool]] .
It is available through the '''Class''' tab of the [[EiffelStudio window overview|context tool]].
{{seealso|<br/>
[[Attributes|Attributes]] }}

View File

@@ -2,7 +2,8 @@
[[Property:weight|-6]]
[[Property:uuid|deb168d4-1855-45d7-85c8-48f43ce5ce5e]]
The suppliers view [[Image:class-supliers-icon]] displays all the classes from which the current class is calling features. <br/>
It is available through the '''Class''' tab of the [[EiffelStudio window overview|context tool]] .
It is available through the '''Class''' tab of the [[EiffelStudio window overview|context tool]].
{{seealso|<br/>
[[Clients|Clients]] }}

View File

@@ -4,6 +4,7 @@
[[Property:uuid|ca7f840d-30fb-c1cb-8f2f-6b45aa244f95]]
The ancestor view [[Image:feature-ancestors-icon]] displays all the features which the current feature is redefining.
{{seealso|<br/>
[[Descendant versions|Descendant versions]] }}

View File

@@ -2,9 +2,10 @@
[[Property:weight|1]]
[[Property:uuid|ad171d9e-9d67-7fb9-10e5-db237b04e40e]]
Basic text view [[Image:view-editor-feature-icon]] displays the text of the current feature as it is written in the enclosing class. <br/>
It does not work with [[Breakpoints|breakpoints]] ; in order to do this the [[Feature formatters: Flat view|flat view]] has to be used.
It does not work with [[Breakpoints|breakpoints]]; in order to do this the [[Feature formatters: Flat view|flat view]] has to be used.
{{note|This view is not available to .NET features which are imported through by means of an assembly. This is because the assembly .exe or .dll exposes only the interface methods and therefore is no feature implementation to display. The feature interface may be viewed, in a clickable format using the Flat View. }}
{{note|This view is not available to .NET features which are imported through by means of an assembly. This is because the assembly '''.exe''' or '''.dll''' exposes only the interface methods and therefore is no feature implementation to display. The feature interface may be viewed, in a clickable format using the Flat View. }}
{{seealso|<br/>

View File

@@ -4,6 +4,7 @@
[[Property:uuid|63b7a88c-86ff-7aef-bf31-05d0ed850e4e]]
The callers view [[Image:feature-callers-icon]] display all the features which are calling the current feature. It is possible to choose in the preferences if callers of the descendants should be displayed too (they are by default).
{{seealso|<br/>
[[Clients|Class clients view]] }}

View File

@@ -4,6 +4,7 @@
[[Property:uuid|c232a74a-7264-c8e1-4613-a65d75302602]]
The descendant view [[Image:feature-descendents-icon]] displays all the features that redefine the current feature.
{{seealso|<br/>
[[Ancestor versions|Ancestor versions]] }}

View File

@@ -1,7 +1,8 @@
[[Property:title|Feature formatters: Flat view]]
[[Property:weight|2]]
[[Property:uuid|b325d97c-772d-8207-a901-a401c6a61376]]
The clickable view [[Image:view-clickable-feature-icon]] displays the feature body as it is seen at run-time (according to ancestor versions, if any). This is why it is possible to add or remove [[Breakpoints|breakpoints]] in this view.
The clickable view [[Image:view-clickable-feature-icon]] displays the feature body as it is seen at run-time (according to ancestor versions, if any). This is why it is possible to add or remove [[Breakpoints|breakpoints]] in this view.
{{seealso|<br/>
[[Class formatters: Flat view|Class flat view]] }}

View File

@@ -4,8 +4,10 @@
[[Property:uuid|933b22f0-c181-fd65-9b52-be20270b00af]]
The homonyms view [[Image:feature-homonyms-icon]] displays all the features in the system which have the same name as the current feature.
{{warning|: This operation may take a long time if the system has a lot of classes. }}
{{seealso|<br/>
[[Implementers|Implementers]] }}

View File

@@ -2,7 +2,8 @@
[[Property:link_title|Feature formatters: Implementers]]
[[Property:weight|9]]
[[Property:uuid|4032bef0-39e5-5fa6-0ffe-156392c0234e]]
The implementers view [[Image:feature-implementers-icon]] displays all the different versions of the current feature by exploring the [[Ancestor versions|ancestor versions]] and the [[Descendant versions|descendant versions]] , and selecting among those the ones which are not inherited.
The implementers view [[Image:feature-implementers-icon]] displays all the different versions of the current feature by exploring the [[Ancestor versions|ancestor versions]] and the [[Descendant versions|descendant versions]], and selecting among those the ones which are not inherited.
{{seealso|<br/>
[[Ancestor versions|Ancestor versions]] <br/>

View File

@@ -3,7 +3,7 @@
[[Property:uuid|81c09c3a-0c0e-ecab-b708-0f5cd8860031]]
[[Image:feature-format-bar]]
Feature views are all available through the '''Feature''' tab of the [[EiffelStudio window overview|context tool]] . <br/>
Feature views are all available through the '''Feature''' tab of the [[EiffelStudio window overview|context tool]]. <br/>
These views (and their associated icon) are:
* [[Image:view-editor-feature-icon]] [[Feature formatters: Basic text view|Basic text view]]
* [[Image:view-clickable-feature-icon]] [[Feature formatters: Flat view|Clickable view]]

View File

@@ -39,7 +39,7 @@ We call a transformation from an element to another element a route, consecutive
Some remarks on the transformation paths:
* If you go through the path from the end of an arrow to its head, you'll possibly find results, but if the transformation is done in the reversed direction, nothing will be found. For example, in any cases, the destination domain will be empty (indicating nothing is found) if you do a transformation from a line element to a class element.
* Code element line appears in the path: Target -> Group -> Class -> Line because typically in an Eiffel class, there are some lines that do not belong to any features, such as class indexing lines or inherit clauses.
* Code element line appears in the path: Target -> Group -> Class -> Line because typically in an Eiffel class, there are some lines that do not belong to any features, such as class <code>note</code> lines or <code>inherit</code> clauses.
* The shortest path will always be used. So if you transform a target element to a line element, the path: Target -> Group -> Class -> Line will be used instead of Target -> Group -> Class -> Feature -> Line
* Paths from element to the element of the same unit are omitted. i.e., there are paths such as Target -> Target, Group -> Group, Class -> Class

View File

@@ -5,8 +5,10 @@ More often than wanted, Eiffel compilations are not successful. The good point i
When an error occurs during an Eiffel compilation in EiffelStudio, the '''Output''' tab of the context tool displays a description of the error and its location, which looks more or less like this:
[[Image:error-message]]
In this case, the compiler tries to explain that the identifier "sessionid" is not a known identifier in the context where it was typed. This is a common error that mainly occurs when making typos in the code. Assuming the message does not make sense to you (which may happen in more complex cases), you can query more information about the encountered error.
To do this:
@@ -14,6 +16,7 @@ To do this:
* [[Pick-and-drop mechanism|Drop]] it either in the editor or on the error help button [[Image:command-error-info-icon]] .
* A dialog is then popped up that describes extended information concerning this error type:
[[Image:error-description-dialog]]

View File

@@ -5,8 +5,10 @@ From EiffelStudio, you can define up to 10 external commands. Those commands wil
To define your own command, select "External commands..." in the Tools menu. Then the following dialog will appear:
[[Image:external-commands-dialog]]
With this dialog you can:
* add new commands
* edit existing commands
@@ -14,9 +16,11 @@ With this dialog you can:
To add your first command, simply click on the "Add..." button and the following command editor will appear:
[[Image:external-commands-dialog-editor]]
In this dialog you can give a name to the command, this name will be displayed in the Tools menu. The index is the position among the external commands of the command in the Tools menu. The command line is the command you want to execute. In order to execute correctly, the application you will execute needs to be in your PATH environment variable or if it is not you must provide an absolute path to the external command. And you can specify the workding directory for that command.
In this dialog you can give a name to the command, this name will be displayed in the Tools menu. The index is the position among the external commands of the command in the Tools menu. The command line is the command you want to execute. In order to execute correctly, the application you will execute needs to be in your PATH environment variable or if it is not you must provide an absolute path to the external command. And you can specify the working directory for that command.
In addition to the external command name, you can pass as many options as you want plus the following placeholders that will be translated before calling the external command:
* $class_name: this will be replaced by the name in lower case of the targeted class in editor

View File

@@ -14,28 +14,29 @@ When clicking '''Attribute''', the window changes to the attribute layout. It ha
This dialog box:<br/>
<div> [[Image:feature-wizard-attribute-example]] </div><br/>
Produces this feature:<br/>
<code>class
PRODUCT
<code>
class
PRODUCT
feature {NONE} -- Access
price: DOUBLE
-- Cost in dollars.
price: DOUBLE
-- Cost in dollars.
feature -- Element change
set_price (a_price: DOUBLE) is
-- Assign `a_price' to `price'.
require
a_price_non_negative: a_price >= 0.0
do
price := a_price
ensure
price_assigned: price = a_price
end
set_price (a_price: DOUBLE)
-- Assign `a_price' to `price'.
require
a_price_non_negative: a_price >= 0.0
do
price := a_price
ensure
price_assigned: price = a_price
end
invariant
price_non_negative: price >= 0.0
price_non_negative: price >= 0.0
end -- class PRODUCT</code>

View File

@@ -13,9 +13,10 @@ For functions and procedures, you can build a formal argument list. You can do t
For every attribute you selected, enter a name in the text box and a type using the [[Type selection|type selection]] .
<div> [[Image:feature-wizard-1-argument]] </div><br/>
The code that is generated:
<code>set_name (s: STRING) is
do
end</code>
<code>
set_name (s: STRING)
do
end</code>

View File

@@ -4,30 +4,30 @@
What goes into the feature body field is dependent on what kind of feature you wish to generate.
* '''do''': this is the normal procedure type. Enter in the field below '''do''' a body for your feature.
<code>
do_something is
do
a := b
end</code>
do_something
do
a := b
end</code>
* '''once''': this is the type for a routine that is executed once per execution. As a once routine cannot have arguments, it is disabled when you added one or more arguments.
<code>
init is
once
load
end</code>
init
once
load
end</code>
* '''deferred''': this creates a routine of deferred type. The local and body fields gray out as they serve no use anymore.
<code>
do_something is
deferred
end</code>
do_something
deferred
end</code>
* '''external''': this creates an Eiffel wrap routine around a routine written in another language. Use the body field to enter a string containing the necessary information about the routine using the external syntax.
<code>
do_something is
external
"C | %"location.h%""
end</code>
do_something
external
"C | %"location.h%""
end</code>

View File

@@ -3,27 +3,36 @@
[[Property:uuid|019ea318-e0e0-dae9-a818-e12232aa8431]]
The feature you create will be inserted in the feature clause you specified. If the feature clause was not already in your class, or not in the right place, EiffelStudio adds the feature clause to the class text based on the feature clause order specified in the [[Preferences Reference|preferences]] . By default, this is the order used by the Eiffel Software libraries, such as EiffelBase.
==Export status==
The export status is the class the feature is accessible for. Usually, this is <eiffel>ANY</eiffel> for public features, or <eiffel>NONE</eiffel> for implementation features, but you can specify any class here. <br/>
The export status is the class the feature is accessible for. Usually, this is <eiffel>ANY</eiffel> for public features, or <eiffel>NONE</eiffel> for implementation features, but you can specify any class here.
[[Image:feature-wizard-export]]
{{note|In the class text, you can export a feature to more than one class but (for simplicity) not with this dialog. }}
==Feature clause names==
For feature clause names it is recommended that you pick one from the standard ones, but it is also possible to create a new one. If you have introduced a special feature clause name in your project, add it to the feature clause order list in the [[Preferences Reference|preferences]] and it will also appear in this dialog. <br/>
For feature clause names it is recommended that you pick one from the standard ones, but it is also possible to create a new one. If you have introduced a special feature clause name in your project, add it to the feature clause order list in the [[Preferences Reference|preferences]] and it will also appear in this dialog.
[[Image:feature-wizard-clausenames]]
==Generated code==
The code that is inserted in your class as a result of the selections made for the feature clause, is of the form: <br/>
<code>
feature {EXPORT} -- Clause name</code><br/>
feature {EXPORT} -- Clause name</code><br/>
except if you specified <eiffel>ANY</eiffel> as export status, which has the same meaning as not specifying class names in the export status: <br/>
<code>
feature --Clause name</code>
feature --Clause name</code>
<br/>
For example, if you specified a the "Initialization" feature clause name, and specified <eiffel>NONE</eiffel> as export status, you get: <br/>
<code>
feature {NONE} -- Initialization</code>
feature {NONE} -- Initialization</code>

View File

@@ -6,8 +6,9 @@ In the header comment field you can type a description of the feature. For style
For example, suppose you have an attribute <eiffel>count</eiffel>. You can enter the following header comment:
<div> [[Image:feature-wizard-comment]] </div><br/>
When clicking '''OK''' this code is generated: <br/>
<code>count: INTEGER
-- Number of students in course</code>
<code>
count: INTEGER
-- Number of students in course</code>

View File

@@ -2,13 +2,21 @@
[[Property:weight|9]]
[[Property:uuid|9f7ec967-0a45-4ad6-4393-521097467192]]
When creating an attribute, you can optionally enter or select an invariant for that feature. That invariant will be added to the end of the existing invariant clause. If the invariant clause did not exist before, it is now created.
<div> [[Image:feature-wizard-invariant]] </div>
[[Image:feature-wizard-invariant]]
If the attribute is of a reference type, you may select the invariant that the attribute may never be void. If it is of a basic expanded type, some other standard options may be chosen. For example, for <eiffel>INTEGER</eiffel> you may select that it should always be positive.
<div> [[Image:feature-wizard-invariant-selected]] </div>
[[Image:feature-wizard-invariant-selected]]
The example above will generate the code:
<code>
invariant
count_positive: count > 0
invariant
count_positive: count > 0
</code>

View File

@@ -1,12 +1,12 @@
[[Property:title|Local variable]]
[[Property:weight|5]]
[[Property:uuid|423aa67d-99f4-0f81-3709-161a6be43af9]]
Enter a local variable in the <code> local </code> field. A local variable clause will be added to the feature:
Enter a local variable in the <code>local</code> field. A local variable clause will be added to the feature:
<code>
...
local
n: INTEGER
...</code>
...
local
n: INTEGER
...</code>

View File

@@ -3,6 +3,7 @@
[[Property:uuid|850bd867-5cbf-34d0-f94c-97a75bfa244b]]
The feature name field is a text box that lets you enter a name for the feature. For help on how to choose the right name for a feature, see: [http://www.eiffel.com/doc/oosc/ Object-Oriented Software Construction, Second Edition] , paragraph 26.2.
{{warning|EiffelStudio performs no validation on the name you choose. For example if you type a space in it, it will generate the code, and detect a syntax error only when compiling. }}

View File

@@ -1,10 +1,11 @@
[[Property:title|Postcondition]]
[[Property:weight|7]]
[[Property:uuid|b8196d6c-2a0f-c06e-855f-d9fe23cbe950]]
Enter a postcondition in the <code> ensure </code> field. A postcondition clause will be added to the feature:
<code>...
ensure
n = count</code>
Enter a postcondition in the <code>ensure</code> field. A postcondition clause will be added to the feature:
<code>
...
ensure
n = count</code>

View File

@@ -1,12 +1,12 @@
[[Property:title|Precondition]]
[[Property:weight|4]]
[[Property:uuid|29b32f9e-799d-de91-d62d-79bdb509144b]]
Enter a precondition in the <code> require </code> field. A precondition clause will be added to the feature:
Enter a precondition in the <code>require</code> field. A precondition clause will be added to the feature:
<code>
...
require
n >= 0
...</code>
...
require
n >= 0
...</code>

View File

@@ -2,21 +2,29 @@
[[Property:weight|10]]
[[Property:uuid|46b84038-099b-070c-15d7-2b7884a50e01]]
When creating an attribute, it is common that you will also need a set-procedure for it. For example, for attribute <eiffel>property</eiffel> you need a procedure <eiffel>set_property</eiffel> to set it. This feature takes one argument of the same type as <eiffel>property</eiffel> or is anchored to it. The only thing you have to do with the feature wizard is check the button '''Generate set procedure'''.
<div> [[Image:feature-wizard-setprocedure]] </div>
The feature that is generated in addition to the attribute itself is placed in feature clause <code> Element change </code> and is exported to all classes. If you have selected or entered an invariant, the precondition will protect this invariant. Example of a generated set-procedure:
<div> [[Image:feature-wizard-setprocedure-example]] </div>
<code>
feature -- Element change
set_button (a_button: EV_BUTTON) is
-- Assign `a_button' to `button'
require
a_button_not_void: a_button /= Void
do
button := a_button
ensure
button_assigned: button = a_button
end
[[Image:feature-wizard-setprocedure]]
The feature that is generated in addition to the attribute itself is placed in feature clause <code>Element change</code> and is exported to all classes. If you have selected or entered an invariant, the precondition will protect this invariant. Example of a generated set-procedure:
[[Image:feature-wizard-setprocedure-example]]
<code>
feature -- Element change
set_button (a_button: EV_BUTTON)
-- Assign `a_button' to `button'
require
a_button_not_void: a_button /= Void
do
button := a_button
ensure
button_assigned: button = a_button
end
</code>

View File

@@ -2,23 +2,42 @@
[[Property:weight|8]]
[[Property:uuid|b2bd8280-a738-dae4-73aa-c1e232245022]]
Whenever you need to give a type of something in the dialog, the type selection component is used. The type selection lets you type any class name or you can pick one from the list.
<div> [[Image:feature-wizard-typeselection]] </div>
[[Image:feature-wizard-typeselection]]
When you select a class that is in the system and has formal generic parameters, the type selection component lets you specify an actual generic parameter in another type selection.
<div> [[Image:feature-wizard-generictype]] </div>
{{note|the window might grow in size because of the added component. }}
[[Image:feature-wizard-generictype]]
{{note|The window might grow in size because of the added component. }}
Since the actual generic type selection is also a type selection, you can select another class with generic parameters and nest them as deep as you need.
<div> [[Image:feature-wizard-generictyperec]] </div>
[[Image:feature-wizard-generictyperec]]
You can also select the type <eiffel>TUPLE</eiffel>, which is a special class that can have zero or more generic parameters. When you select it, it has no parameters, but you can add one by clicking on the '''Add parameter''' button. Click it as often as the number of generic parameters that you need.
<div> [[Image:feature-wizard-tupletype2]] <br/>
</div>
{{warning|if you need a very complex type, it is better not to use the dialog, as the window might grow bigger than your screen. After you completed the feature, edit it manually in the class text. }}
[[Image:feature-wizard-tupletype2]]
{{warning|If you need a very complex type, it is better not to use the dialog, as the window might grow bigger than your screen. After you completed the feature, edit it manually in the class text. }}
The code generated for the selected type is quite straightforward, an example:
<div> [[Image:feature-wizard-complextype]] <br/>
</div>
[[Image:feature-wizard-complextype]]
<code>
new_feature: FUNCTION [ANY, TUPLE [INTEGER], BOOLEAN]
new_feature: FUNCTION [ANY, TUPLE [INTEGER], BOOLEAN]
</code>

View File

@@ -17,20 +17,21 @@ When clicking '''Function''', the dialog changes to the function layout. It has
This dialog box:<br/>
<div> [[Image:feature-wizard-function-example]] </div><br/>
Produces this feature:<br/>
<code>class
PRODUCT
<code>
class
PRODUCT
feature -- Status report
order_price (quantity: INTEGER): DOUBLE is
-- Total price when ordering `quantity'.
require
quantity_non_negative: quantity >= 0
do
Result := quantity * price
ensure
correct: Result = quantity * price
end
order_price (quantity: INTEGER): DOUBLE
-- Total price when ordering `quantity'.
require
quantity_non_negative: quantity >= 0
do
Result := quantity * price
ensure
correct: Result = quantity * price
end
end -- class PRODUCT</code>

View File

@@ -20,19 +20,19 @@ This dialog box:<br/>
Produces this feature:<br/>
<code>
class
PRODUCT
PRODUCT
feature {PERSON} -- Element change
place_order (person: PERSON; quantity: INTEGER) is
-- Mail `quantity' to `person'.
require
person /= Void and quantity > 0
do
person.mail_order (Current, quantity)
ensure
person.has_ordered (Current)
end
place_order (person: PERSON; quantity: INTEGER)
-- Mail `quantity' to `person'.
require
person /= Void and quantity > 0
do
person.mail_order (Current, quantity)
ensure
person.has_ordered (Current)
end
end -- class PRODUCT</code>

View File

@@ -5,7 +5,7 @@ The second screen of the wizard lets you reuse a previously generated ''Executio
The profiler wizard has detected that one or more ''Execution Profiles'' have already been generated for this system in this compilation mode. If you have executed your system after the generation of the existing profile, select '''Generate a profile from Run-time information record''' to create a new ''Execution Profile'' for the newly produced ''Run-time information record''.
{{note|If you choose '''Generate a profile from Run-time information record''' the generated ''Execution Profile'' will be written into ''<project_directory>/EIFGENa/target_name/W_CODE/profinfo.pfi'' if you have selected '''Workbench mode''' in the first step, or ''<project_directory>/EIFGENs/target_name/F_CODE/profinfo.pfi'' if you have selected '''Finalized mode'''. If a file with the same name already exists its content will be destroyed and replaced. }}
{{note|If you choose '''Generate a profile from Run-time information record''' the generated ''Execution Profile'' will be written into: <br/><br/>''<project_directory>/EIFGENa/target_name/W_CODE/profinfo.pfi'' <br/><br/>if you have selected '''Workbench mode''' in the first step, or into: <br/><br/>''<project_directory>/EIFGENs/target_name/F_CODE/profinfo.pfi'' <br/><br/>if you have selected '''Finalized mode'''. If a file with the same name already exists its content will be destroyed and replaced. }}
<br/>
However, if you have not executed your system since the generation of the last ''Execution Profile'', there is no need to generate a new ''Execution Profile''. If you are in the latter case, select '''Use existing profile''' and choose the last ''Execution Profile'' you have generated.

View File

@@ -5,6 +5,7 @@ The third screen of the wizard lets you generate an ''Execution Profile'' from a
Then, in the combo box labeled '''Profiler used to produce the above record''', select the profiler that has been used to produce the ''Run-time information record'' you have entered. If the profiler used to execute the system does not appear in the combo box, you have to add it. See [[How to set up a Profiler Configuration File|How to set up a Profiler Configuration File]] for more details on how to do so.
{{note|The Run-time information record must be located in the ''EIFGENs/target_name/W_code'' directory of your project. }}
<br/>
@@ -13,7 +14,8 @@ Then, in the combo box labeled '''Profiler used to produce the above record''',
Clicking '''Next''' will lead you to the [[Select the information you need and formulate your query|Final state]] if the provided ''Run-time information record'' is valid. If the ''Run-time information record'' is not valid or is not located in the ''EIFGENs/target_name/W_code'' directory of the project, you will go to the '''Run-time Information Record Error state''' as shown below.
<br/>
[[Image:profiler-wizard-rtir-error-state]] <br/>
<br/>