NUMERIC to STRING ==
+
+Every class has the out method that can be used to get a text version of the object. For a lot of classes, this method returns internal information that is not really useful for the end user. But for every NUMERIC class, the out method returns a text representation of the number that the NUMERIC object represents.
print_integer (a_integer: INTEGER)
@@ -14,4 +16,8 @@ Every class has the `out` method that can be used to get a text version of the o
end
-Note that for more advanced conversion, you can also use a conversion class like `FORMAT_DOUBLE`.
\ No newline at end of file
+Note that for more advanced conversion, you can also use a conversion class like FORMAT_DOUBLE.
+
+== STRING to NUMERIC ==
+
+The reverse conversion is available for all standard numeric types (INTEGER_8, INTEGER_16, etc.) using the features to_integer_8, to_integer_16, etc. of class STRING. The string should contain a valid string representation of the corresponding numeric value. This can be checked by calling is_integer_8, is_integer_16, etc. before calling the conversion functions.
\ No newline at end of file
diff --git a/documentation/trunk/eiffel/Tutorials/eiffel-tutorial-et/et-design-contract-tm-assertions-and-exceptions.wiki b/documentation/trunk/eiffel/Tutorials/eiffel-tutorial-et/et-design-contract-tm-assertions-and-exceptions.wiki
index d9edb63f..5e4231ae 100644
--- a/documentation/trunk/eiffel/Tutorials/eiffel-tutorial-et/et-design-contract-tm-assertions-and-exceptions.wiki
+++ b/documentation/trunk/eiffel/Tutorials/eiffel-tutorial-et/et-design-contract-tm-assertions-and-exceptions.wiki
@@ -1,3 +1,5 @@
+[[Property:modification_date|Thu, 21 Jan 2021 13:42:09 GMT]]
+[[Property:publication_date|Thu, 21 Jan 2021 13:42:09 GMT]]
[[Property:title|ET: Design by Contract (tm), Assertions and Exceptions]]
[[Property:weight|-8]]
[[Property:uuid|2ef367c9-34d9-d45e-a722-163b39581405]]
@@ -323,7 +325,7 @@ Concretely, exceptions may result from the following events: rescue clauses, to ascertain the exact nature of the exception that got the execution there. For this it is suffices to inherit from the Kernel Library class EXCEPTIONS, which provides queries such as exception, giving the code for the last exception, and symbolic names ( [[ET: Other Mechanisms#Constant_attributes|"Constant attributes"]] ) for all such codes, such as No_more_memory. You can then process different exceptions differently by testing exception against various possibilities. The method strongly suggests, however, that exception handling code should remain simple; a complicated algorithm in a rescue clause is usually a sign that the mechanism is being misused. Class EXCEPTIONS also provides various facilities for fine-tuning the exception facilities, such as a procedure raise that will explicitly trigger a "developer exception" with a code that can then be detected and processed. Exception handling helps produce Eiffel software that is not just correct but robust, by planning for cases that should not normally arise, but might out of Murphy's law, and ensuring they do not affect the software's basic safety and simplicity.
+It is sometimes useful, when handling exceptions in rescue clauses, to ascertain the exact nature of the exception that got the execution there. For this it suffices to inherit from the Kernel Library class EXCEPTIONS, which provides queries such as exception, giving the code for the last exception, and symbolic names ( [[ET: Other Mechanisms#Constant_attributes|"Constant attributes"]] ) for all such codes, such as No_more_memory. You can then process different exceptions differently by testing exception against various possibilities. The method strongly suggests, however, that exception handling code should remain simple; a complicated algorithm in a rescue clause is usually a sign that the mechanism is being misused. Class EXCEPTIONS also provides various facilities for fine-tuning the exception facilities, such as a procedure raise that will explicitly trigger a "developer exception" with a code that can then be detected and processed. Exception handling helps produce Eiffel software that is not just correct but robust, by planning for cases that should not normally arise, but might out of Murphy's law, and ensuring they do not affect the software's basic safety and simplicity.
==Other applications of Design by Contract==
diff --git a/documentation/trunk/eiffelstudio/Tutorials/appendix-writing-documentation-filters-eff-eiffel-filter-format.wiki b/documentation/trunk/eiffelstudio/Tutorials/appendix-writing-documentation-filters-eff-eiffel-filter-format.wiki
index ad07140c..3d453f4f 100644
--- a/documentation/trunk/eiffelstudio/Tutorials/appendix-writing-documentation-filters-eff-eiffel-filter-format.wiki
+++ b/documentation/trunk/eiffelstudio/Tutorials/appendix-writing-documentation-filters-eff-eiffel-filter-format.wiki
@@ -1,25 +1,123 @@
-[[Property:title|Appendix: Writing Documentation Filters with EFF, the Eiffel Filter Format]]
+[[Property:link_title|Writing Filters with EFF]]
+[[Property:modification_date|Mon, 22 Feb 2021 12:51:04 GMT]]
+[[Property:publication_date|Thu, 11 Feb 2021 07:55:20 GMT]]
+[[Property:title|Writing Documentation Filters with EFF, the Eiffel Filter Format]]
[[Property:weight|6]]
[[Property:uuid|0d17d433-3d4f-9575-49f7-d97eccb1a5b1]]
-This appendix provides reference information, not needed in simple uses of EiffelStudio.
+The section [[PRODUCING AND EXPORTING DOCUMENTATION|Producing and Exporting Documentation]] describes how to generate documentation about a system from within EiffelStudio.
-We saw in the [[PRODUCING AND EXPORTING DOCUMENTATION|section on documentation]] that you can output documentation about your system in many different formats. A number of predefined formats are available, from Postscript to Microsoft's Rich Text Format, FrameMaker, HTML with and without style sheets, TEX and others. There's nothing special about these formats: they just make their conventions known to EiffelStudio through a '''filter''' expressed in a simple notation called EFF, or Eiffel Filter Format. If you have a favorite format that you'd like EiffelStudio to use for producing documentation, you can define your own filter in EFF. Applications include:
+A number of predefined formats are available as '''filter files''' in a simple notation called EFF, or Eiffel Filter Format.
+
+This chapter describes EFF and its conventions, enabling you to write filters.
+
+If you have a favorite format that you'd like EiffelStudio to use for producing documentation, you can define your own filter in EFF. Applications include:
* Producing a variant of an existing format, to support some "house style" that you have defined, such as a different formatting or fonts.
* Producing documentation for a text processing tool that's not among those supported by default.
* Producing documentation that purposely omit some parts of Eiffel texts, in line with the ideas applied by the Contract and Flat Contract forms.
-This appendix describes EFF and its conventions, enabling you to write filters. Note that in practice the best way to write an EFF filter is usually not from scratch, but by copying an existing filter -- one that seems closest to your needs -- and adapting the copy.
+Note that in practice the best way to write an EFF filter is usually not from scratch, but by copying an existing filter -- one that seems closest to your needs -- and adapting the copy.
+
+----
+
+==Available Standard Filters==
+
+{| class="wikitable"
+|+ '''''Filter Files Overview'''''
+|-
+! style="width:10em;" | Documentationfil in the directory
-$ISE_EIFFEL/studio/filters
+When you choose to generate documentation, EiffelStudio will ask you to select a filter from a list it obtains by looking up the files of extension .fil in the directory $ISE_EIFFEL/studio/filters
-To make a new filter available to yourself and other users of this installation, just add the corresponding file name . fil to this directory. Make sure to choose the appropriate name, since this is what the menu of available filters will display.
+To make a new filter available to yourself and other users of this installation, just add the corresponding file some_name.fil to this directory. Make sure to choose the appropriate name, since this is what the menu of available filters will display.
+
+==Output generated==
+
+The output will be placed in the directory specified in the "Project>Generate Documentation" dialog of EiffelStudio.
+
+The output type is determined by the suffix construct in the filter file.
+
+Output type 1 - suffix is HTML:
+* HTML formatted web pages with file extension .HTML
+* with a copy of the stylesheet default.css copied to the Documentation directory
+* with a generated menu goto.html placed into the Documentation directory with submenu directories as required
+* any other supporting files (stylesheets, javascript) must manually be placed in the Documentation directory
+* the filter must define a major construct, eg class_declaration, cluster_declaration, to contain a complete HTML skeleton of a webpage
+
+Output type 2 - suffix is any other:
+* if suffix is missing the output will produced with a .TXT file extension
+* if suffix is defined the output will produced with the given file extension
+* as needed the filter must define a major construct, eg class_declaration, cluster_declaration, to contain a complete skeleton for the desired output target
==Filter basics==
-An EFF filter follows a very simple structure. As with all other Eiffel-related notations (such as Eiffel itself and Lace, the control language for Eiffel systems), any line or part of a line beginning with two consecutive dashes -- is a comment, except if it immediately follows a percent sign since, as will be seen below, - %- is used to denote an Eiffel comment in the class text. Blank lines are also permitted. Comments and blank lines carry no semantic value.
+An EFF filter follows a very simple structure. As with all other Eiffel-related notations any line or part of a line beginning with two consecutive dashes -- is a comment, except if it immediately follows a percent sign since, as will be seen below, - %- is used to denote an Eiffel comment in the class text. Blank lines are also permitted. Comments and blank lines carry no semantic value.
Except for comments and blank lines, a filter is a sequence of entries, all of the form
Construct | Replacement
@@ -30,53 +128,29 @@ For readability, there may be any number of blanks or tabs between the Con
==The asterisk==
-In the Replacement part, you may use the symbol * (asterisk) to denote the construct specimen itself. So for example the entry
-Feature_clause | %N%N*%N%N
+In the Replacement part, you may use the symbol * (asterisk) to denote the construct specimen itself.
-specifies the following formatting for any Feature_clause: two successive blank lines (expressed as %N, New Line, a convention taken from Eiffel); the feature clause itself; two blank lines.
+So for example the entry Feature_clause | %N%N*%N%N specifies the following formatting for any Feature_clause:
+two successive blank lines (expressed as %N, New Line); the feature clause itself; two blank lines.
-Similarly, in an HTML format, the entry
-External | *
+Similarly, in an HTML format, the entry External | * means that the Eiffel keyword external must appear in the filtered form immediately preceded by , the HTML code for switching to boldface, and immediately followed by , the code for reverting to the previous setup.
-means that the Eiffel keyword external must appear in the filtered form immediately preceded by , the HTML code for switching to boldface, and immediately followed by , the code for reverting to the previous setup. Here you can also write the right-hand side without the asterisks, as external. If, however, all keywords are to use boldface, it is preferable to write a single entry
-Keyword | *
-
-which, thanks to the asterisk, will govern all construct specimens of the Keyword category. You can still override this specification for an individual keyword by including a specific entry for it.
+Here you can also write the right-hand side without the asterisks, as external. If, however, all keywords are to use boldface, it is preferable to write a single entry Keyword | * which, thanks to the asterisk, will govern all construct specimens of the Keyword category. You can still override this specification for an individual keyword by including a specific entry for it.
==Constructs==
-The following general syntactic constructs may appear as the left-hand side, Construct, of an entry:
-
-Class_declaration
-Class_end
-Class_header
-Class_name
-Comment
-Creators
-Escape
-Feature_clause
-Feature_declaration
-Features
-Formal_generics
-Indexing_clause
-Inheritance
-Invariant_clause
-Keyword
-New_line
-Obsolete_clause
-Suffix
-Symbol
-Tab
-
+The general syntactic constructs may appear as the left-hand side, Construct, of an entry:
-Most of these denote Eiffel constructs as they appear in the official language reference, the book [[Eiffel: The Language]] . Since the Eiffel construct names Feature, Invariant and Obsolete are also keywords and EFF, like Eiffel, is case-insensitive, the EFF construct names use the suffix _clause, for example Feature_clause.
+Most EFF constructs denote Eiffel constructs as they appear in the official language reference.
+
+Since certain construct names Feature, Invariant and Obsolete are also Eiffel keywords and EFF, like Eiffel, is case-insensitive, the EFF construct names use the suffix _clause, for example Feature_clause.
The constructs corresponding to syntactic constructs are self-explanatory. The others are:
* Class_end, denoting the final end of a class text.
-* Keyword, denoting any Eiffel keyword among those listed in boldface in the corresponding appendix in [[Eiffel: The Language]]
+* Keyword, denoting any Eiffel keyword among those listed in boldface in the the official language reference.
* New_line, denoting any passage to a new line in the class text.
* Suffix, used to introduce the file extension for the generated documentation files. If you don't specify this, EiffelStudio will use the filter's name as extension.
-* Symbol, denoting any of the Eiffel symbols listed in the corresponding appendix of [[Eiffel: The Language]] .
+* Symbol, denoting any of the Eiffel symbols listed in the official language reference.
* Escape, to protect special characters of the external tool, as explained below.
* Tab, denoting any tab character appearing in the class text.
@@ -117,3 +191,373 @@ If c is not one of the characters for which special conventions hav
A multi-line entry uses the Eiffel convention for string continuations: % at the end of a line to signal that there is a continuation; a continuation line begins with zero or more spaces and tabs followed by a % ; the characters after the % are the continuation of the string.
+==Sample page encoding==
+
+We show sample code taken from existing filter files to demonstrate the basic structure of the skeleton needed for visual presentation.
+
+Note in both examples the position of the *place holder that will contain the expanded page body for the referenced construct.
+
+
+====webpages====
+
+To replace the default.css copied into your Documentation directory write your own stylesheet based on it and save under a different name. Important: chose a different name or EiffelStudio will overwrite it. Add any scripting files to the Documentation directory if required. Font choice is of course also a user option. Note the generated goto.html file (not a standalone webpage) that contains the navigation thru the generated webpages and is expected to be included by the page skeleton. Replace and add any required inclusion links into the HEAD section of the webpage.
+
+
+
+class_declaration |%
+ %%N%
+ %%N%
+ %%N%
+ %%N%
+ %$html_meta$%
+ %%N%
+ %%N%
+ %$title$ %N%
+ %%N%
+ %%N%
+ %%N%
+ %%N%
+ %*
%N%
+ %Generated by %
+ %ISE EiffelStudio
%N%
+ %%N%
+ %%N
+
+
+
+====for printing====
+
+Here a sample coding for RTF formatted output, to be run thru some comaptible word processor for pretty printing.
+
+
+
+Cluster_declaration, Class_declaration |%
+ %{\rtf1\ansi\ansicpg1252\deflang1033{\fonttbl{\f0\fscript\fcharset0 Courier;}}%
+ %{\colortbl ;\red0\green0\blue0;\red255\green255\blue255;\red128\green0\blue0;%
+ %\red0\green0\blue255;\red0\green128\blue0;\red0\green0\blue128;}%N%
+ %{\cf3\f0\fs16 {\tab}{\tab}{\tab}%-%- Automatic generation produced by ISE Eiffel %-%-%N%
+ %{\line}%N%
+ %{*}%N%
+ %{\line}%N%
+ %{\cf3 {\tab}{\tab}{\tab}%-%- Generated by ISE Eiffel %-%-}%N%
+ %{\line}%N%
+ %{\cf3{\tab}{\tab}{\tab}%-%- For more details: http://www.eiffel.com %-%-}%N%
+ %}}%N
+
+
+
+==The EFF Template File==
+
+
+The following is a replica of the EFF template file as distributed with EiffelStudio v20.11.
+
+
+Location: $ISE_EIFFEL/studio/filters/format.fil-template
+
+Timestamp: $Date: 2013-04-18 20:30:43 +0000 (Thu, 18 Apr 2013) $
+ $Revision: 92456 $
+
+
+====Generator provided Items====
+
+Several extra items may be used and accessed through: $item$.
+
+In every construct, the following items are defined:
+
+$generator$ "ISE EiffelStudio version x.x.x"
+
+$html_meta$ HTML specific. Entire indexing clause defined as meta data.
+ Example: "".
+
+$class$ Classname in uppercase. If currently processed file does
+ not represent an Eiffel class, is empty.
+
+$title$ Title for current document.
+ Example: "EV_ANY Text".
+
+$root$ Relative base directory of generated documentation.
+ Example: "../../../../"
+
+
+====Properties====
+
+
+suffix |html
+ Used to specify suffix used for this format.
+ Examples: html, txt, ps, e, etc.
+
+file_separator |/
+ Specify when format requires a specific file separator.
+ For HTML, specify '/'. If this symbol is omitted, the separator
+ specific for the platform is used.
+
+
+====Basic Text====
+
+
+basic |*
+ Basic text
+
+
+====Hyperlinking items====
+
+
+menu_bar |*
+ Contains the different menu items.
+
+menu_item |*
+ Any of the global menu items, "Classes", "Clusters", etc.
+ If not specified, no text is processed, since without hyperlinking
+ menu items are useless.
+ Symbol: $file$
+
+class_menu_item |*
+ A link to one of the specified class formats.
+ If not specified, no text is processed.
+ Symbol: $file$
+
+menu_item_disabled |*
+ The current format.
+
+class_menu_item_disabled |*
+ The current format.
+
+cluster_name |*
+ Symbol: $file$.
+
+tooltip |*
+ Text contained within this construct requests a tooltip.
+ Symbol: $tooltip$.
+ HTML Example: *
+
+origin_comment |*
+ Text describing the written class of a feature.
+ Example: -- from ANY
+
+
+====Major syntactical constructs====
+
+
+class_declaration |*
+ Contains entire document.
+ HTML Example: *
+
+indexing_clause |*
+
+class_header |*
+ Contains class header, not including formal generics.
+
+formal_generics |*
+
+obsolete_clause |*
+
+inheritance |*
+
+creators |*
+
+feature_clause |*
+
+feature_declaration |*
+ Entire feature declaration. Symbol:
+ $feature$ The name of the decalred feature.
+ HTML example: *
+
+invariant_clause |*
+
+class_end |*
+
+
+====Eiffel syntax items====
+
+
+features |*
+ Eiffel feature reference. Symbols:
+ $feature$ actual feature name of feature in class where it is written.
+ $file$ link to class where feature is written.
+ HTML example: *
+
+keyword |*
+ Processed when a keyword is encountered but it is not
+ explicitly specified.
+
+keyword_features |*
+ Operator keyword or "Precursor"
+ If not specified, "keyword" is processed.
+ $file$ and $feature$ are defined, like for "features".
+
+symbol |*
+ Processed when a symbol is encountered but it is not
+ explicitly specified.
+
+symbol_features |*
+ Operator symbol. If not specified, "symbol" is processed.
+ $file$ and $feature$ are defined, like for "features".
+
+reserved_word |*
+ `Result' or `Current'.
+
+comment |*
+ Example.
+
+comment_url |*
+ A URL in a comment. If not specified, "comment" is processed.
+ Symbol $file$ contains the URL.
+
+string |*
+ Eiffel literal string.
+
+string_url |*
+ A URL inside an Eiffel string. If not specified, "string" is processed.
+ Symbol $file$ contains the URL.
+
+quoted |*
+
+character |*
+
+number |*
+
+local_symbol |*
+
+assertion_tag |*
+
+indexing_tag |*
+
+generic |*
+ Formal generic class.
+
+
+====Whitespace processing====
+
+
+tab |*
+ HTML Example: " %; %; %; %;".
+
+new_line |*
+ HTML Example: "
".
+
+multiple_spaces |*
+ In case a sequence of spaces are encountered, this symbol is used for all subsequent spaces.
+ HTML Example: " %;".
+
+
+====Eiffel keywords====
+
+
+interface |*
+ Appended to keyword "class" in short and flat-short forms.
+
+alias |*
+all |*
+as |*
+check |*
+class |*
+create |*
+debug |*
+deferred |*
+do |*
+else |*
+elseif |*
+end |*
+ensure |*
+expanded |*
+export |*
+external |*
+false |*
+feature |*
+from |*
+frozen |*
+if |*
+indexing |*
+infix |*
+inherit |*
+inspect |*
+invariant |*
+is |*
+like |*
+local |*
+loop |*
+obsolete |*
+old |*
+once |*
+precursor |*
+prefix |*
+redefine |*
+rename |*
+require |*
+rescue |*
+retry |*
+select |*
+separate |*
+strip |*
+then |*
+true |*
+undefine |*
+unique |*
+until |*
+variant |*
+when |*
+
+Operators:
+
+and |*
+and then |*
+implies |*
+not |*
+or |*
+or else |*
+xor |*
+
+
+====Eiffel symbols====
+
+
+:= |*
+: |*
+%, |*
+-> |*
+%-- |*
+$ |*
+. |*
+.. |*
+" |*
+= |*
+! |*
+> |*
+>= |*
+<< |*
+[ |*
+{ |*
+( |*
+< |*
+<= |*
+' |*
+>> |*
+] |*
+} |*
+) |*
+?= |*
+; |*
+~ |*
+
+Operators:
+
++ |*
+- |*
+%* |*
+/ |*
+// |*
+\\ |*
+^ |*
+/= |*
+
+
+====Obsolete filter constructs====
+
+
+!! |*
+creation |*
+cluster_declaration |*
+cluster_header |*
+
+
+----
diff --git a/documentation/trunk/eiffelstudio/Tutorials/customizing-tools-layout-and-toolbars.wiki b/documentation/trunk/eiffelstudio/Tutorials/customizing-tools-layout-and-toolbars.wiki
index 4c361a7d..e019dc95 100644
--- a/documentation/trunk/eiffelstudio/Tutorials/customizing-tools-layout-and-toolbars.wiki
+++ b/documentation/trunk/eiffelstudio/Tutorials/customizing-tools-layout-and-toolbars.wiki
@@ -1,4 +1,4 @@
-[[Property:modification_date|Tue, 21 Aug 2018 18:55:21 GMT]]
+[[Property:modification_date|Tue, 14 Sep 2021 19:26:17 GMT]]
[[Property:publication_date|Tue, 21 Aug 2018 18:55:21 GMT]]
[[Property:title|Customizing the tools layout and toolbars]]
[[Property:weight|-8]]
@@ -35,6 +35,16 @@ You can try this now and see the effect. Your tools layout will probably not cha
You can see in the image above that you would also follow that menu path in order to save a tools layout or to activate one that you had previously saved.
+==Reverting to the default layout using the command line ==
+
+From the command line, since version 20.05, it is also possible to reset the IDE layout
+
+```sh
+ec -reset_ide_layout
+```
+
+From the command line, you may need to set the ISE_EIFFEL, and ISE_PLATFORM environment variable.
+The `ec` executable is located in `$ISE_EIFFEL/studio/spec/$ISE_PLATFORM/bin`.
==Minimizing, maximizing, restoring, and closing tools==
diff --git a/documentation/trunk/eiffelstudio/Tutorials/producing-and-exporting-documentation.wiki b/documentation/trunk/eiffelstudio/Tutorials/producing-and-exporting-documentation.wiki
index bde3f645..2e8bf73d 100644
--- a/documentation/trunk/eiffelstudio/Tutorials/producing-and-exporting-documentation.wiki
+++ b/documentation/trunk/eiffelstudio/Tutorials/producing-and-exporting-documentation.wiki
@@ -1,3 +1,5 @@
+[[Property:modification_date|Sat, 13 Feb 2021 06:17:06 GMT]]
+[[Property:publication_date|Mon, 08 Feb 2021 02:10:40 GMT]]
[[Property:title|Producing and Exporting Documentation]]
[[Property:weight|-7]]
[[Property:uuid|ca43a3c2-9e1a-a69f-81cf-55d0b12294ea]]
@@ -13,6 +15,7 @@ EiffelStudio provides unique facilities to make such distributed development pos
EiffelStudio's documentation generation satisfies all these requirements.
+
==Documentation filters==
Let's see how documentation works by starting to generate it for our Guided Tour system -- which really means for EiffelBase, since that's what it mostly consists of. The HTML result is available as part of the present documentation (we'll tell you where in just a minute), so you don't have to regenerate it unless you want to. Indeed we'll show you when to click Cancel if you are happy with the pre-generated version. But let's get started anyway to understand the principles and possibilities.
@@ -43,7 +46,7 @@ The filter names correspond to major documentation formats which EiffelStudio su
Not only do these predefined filters provide support for a number of important industry formats; better yet, if you want another format not represented on the list, or would like to adapt an existing format to your own style preferences, it's easy to define a new filter. The list that EiffelStudio displays comes from the files with a .fil extension that it finds in a subdirectory of the installation:
$ISE_EIFFEL/studio/filters
-To define a new filter, simply add a file to this directory. Filters are expressed in a simple notation called EFF ( Eiffel Filter Format ), general enough to support a wide variety of tools for text processing, project management, Web publishing etc. The best way to define a new filter is usually to start from an existing one and adapt it. You will find the specification of EFF at the end of this manual, [[APPENDIX: WRITING DOCUMENTATION FILTERS WITH EFF, THE EIFFEL FILTER FORMAT|here]] .
+To define a new filter, simply add a file to this directory. Filters are expressed in a simple notation called EFF ( Eiffel Filter Format ), general enough to support a wide variety of tools for text processing, project management, Web publishing etc. The best way to define a new filter is usually to start from an existing one and adapt it. More on customization [[#Customization|below]] .
==Generating an HTML record of your project==
@@ -112,8 +115,6 @@ You may, however, select any other location you like. In the case of HTML genera
To continue the Guided Tour, you do '''not''' need to complete the generation now unless you want to. If you are happy to continue without generating the documentation at the moment then click Cancel on the last dialog.
-{{note|If you do prefer to produce your own local version of the full documentation for the guided tour system, click "Finish". The process takes 7 minutes on the Thinkpad configuration mentioned earlier, and generates a documentation directory of about 220 megabytes. }}
-
==Browsing generated documentation==
Let's take a look at the generated documentation. We start with the root of the generated documentation, Documentation/index.html :
@@ -150,12 +151,14 @@ The top row of hyperlinks now includes class formats corresponding to those we d
We'll stop this brief review here but you may continue browsing through the HTML pages if you like. Note how closely the appearance of the class texts, flat forms, contract forms, diagrams and other forms of documentation matches the corresponding formats under EiffelStudio.
-Although we suggest staying with the standard, you can easily change any convention that doesn't match your own preferences:
-* For the EiffelStudio appearance, use Tools --> Preferences.
-* For the HTML appearance, if you know about Cascading Style Sheets (CSS) for HTML, edit the style sheet default.css. You will find this file in the generated documentation directory; alternatively, to ensure the changes are applicable to the generated documentation of all future projects, edit defaults.css in the directory after backing it up. For more profound changes in the structure of the generated HTML, you may also backup and edit the Eiffel Filter Format file html-stylesheet.fil in the same directory. EFF is described in the [[APPENDIX: WRITING DOCUMENTATION FILTERS WITH EFF, THE EIFFEL FILTER FORMAT|Appendix]] .
-
- $ISE_EIFFEL/studio/filters
+==Customization==
+
+As shown above in section [[#Documentation_filters|Documentation Filters]] the generation mechanisms can produce a number of output formats. The format definition files have an extension .fil and are stored in the directory $ISE_EIFFEL/studio/filters
+
+Although we suggest staying with the standard, you can easily add or change any definition that doesn't match your own preferences.
+
+The format of the filter files is described in [[/doc/eiffelstudio/Writing_Documentation_Filters_with_EFF%2C_the_Eiffel_Filter_Format|Writing Documentation Filters with EFF]] .
-The documentation generation mechanisms, using HTML or other formats, let you publish your designs, at the level of detail you desire, on an Intranet, the Internet, or as part of documents you release. They are an important part of the power of EiffelStudio for quality software development.
+{{Note|to adapt the presentation format within the EiffelStudio editors, use Tools --> Preferences.}}
diff --git a/documentation/trunk/eiffelstudio/eiffelstudio-reference/eiffelstudio-release-notes/Release-notes-for-EiffelStudio-20.11.wiki b/documentation/trunk/eiffelstudio/eiffelstudio-reference/eiffelstudio-release-notes/Release-notes-for-EiffelStudio-20.11.wiki
index b2139096..95c286d1 100644
--- a/documentation/trunk/eiffelstudio/eiffelstudio-reference/eiffelstudio-release-notes/Release-notes-for-EiffelStudio-20.11.wiki
+++ b/documentation/trunk/eiffelstudio/eiffelstudio-reference/eiffelstudio-release-notes/Release-notes-for-EiffelStudio-20.11.wiki
@@ -1,4 +1,4 @@
-[[Property:modification_date|Fri, 18 Dec 2020 16:54:25 GMT]]
+[[Property:modification_date|Tue, 22 Dec 2020 13:25:18 GMT]]
[[Property:publication_date|Tue, 08 Dec 2020 08:39:55 GMT]]
[[Property:uuid|789BFB80-6C53-4E92-B061-C0C1758838DB]]
[[Property:title|Release notes for EiffelStudio 20.11]]
@@ -24,13 +24,6 @@
* Extended the (unstable) `base_extension` library with classes for graphs, B-trees, and union-find.
* Added 3 new wrappers for mpack, cairo, and rsvg C libraries (available via iron).
-==Known issues==
-=== EiffelStudio IDE===
-* By default, the feature completion dialog (`[Ctrl]+[Space]`) do not show Unicode symbols (including the new across loop symbols). There are 3 solutions to change the behavior:
-** When the completion dialog popups, at the bottom you have a few toggle button for options, including the 5th one to show the Unicode symbols.
-** Change the preference `editor.eiffel.show_completion_unicode_symbols`
-** Change in the `$ISE_EIFFEL/studio/eifinit/default.xml`, the value for the preference `editor.eiffel.show_completion_unicode_symbols` from `False` to `True`.
-
----
See [https://dev.eiffel.com/EiffelStudio_20.11_Releases change log] for more details.
diff --git a/documentation/trunk/eiffelstudio/eiffelstudio-reference/formatted-information-about-compiled-classes-and-features/index.wiki b/documentation/trunk/eiffelstudio/eiffelstudio-reference/formatted-information-about-compiled-classes-and-features/index.wiki
index 2489e7b1..a33c32e5 100644
--- a/documentation/trunk/eiffelstudio/eiffelstudio-reference/formatted-information-about-compiled-classes-and-features/index.wiki
+++ b/documentation/trunk/eiffelstudio/eiffelstudio-reference/formatted-information-about-compiled-classes-and-features/index.wiki
@@ -1,10 +1,11 @@
+[[Property:modification_date|Sun, 14 Feb 2021 06:09:42 GMT]]
+[[Property:publication_date|Sun, 14 Feb 2021 06:09:42 GMT]]
[[Property:title|Formatted information about compiled classes and features]]
[[Property:weight|2]]
[[Property:uuid|487a89c3-14a7-26c4-ae87-f3442f315bc3]]
Different kinds of information about classes and features can be seen in EiffelStudio depending on the developer's needs.
-{{SeeAlso|The Eiffel Software Learning Map [http://eiffel.com/developers/learning_maps/Training/Maps/HowDoYouView/index.html How do you view?]}}
diff --git a/documentation/trunk/solutions/concurrent-computing/concurrent-eiffel-scoop/scoop-asynchronous-calls.wiki b/documentation/trunk/solutions/concurrent-computing/concurrent-eiffel-scoop/scoop-asynchronous-calls.wiki
index b435440e..f7ac42ac 100644
--- a/documentation/trunk/solutions/concurrent-computing/concurrent-eiffel-scoop/scoop-asynchronous-calls.wiki
+++ b/documentation/trunk/solutions/concurrent-computing/concurrent-eiffel-scoop/scoop-asynchronous-calls.wiki
@@ -1,4 +1,4 @@
-[[Property:modification_date|Thu, 13 Feb 2020 16:00:53 GMT]]
+[[Property:modification_date|Fri, 29 Jan 2021 15:22:03 GMT]]
[[Property:publication_date|Thu, 13 Feb 2020 16:00:53 GMT]]
[[Property:title|Asynchronous Calls]]
[[Property:weight|6]]
@@ -66,7 +66,7 @@ Note the difference between ''controlled'' and ''locked'':
{{note|In terms of implementation, a ''lock'' corresponds to an open call queue to a region.}}
-Now consider a small classes HASH_STORAGE and EXAMPLE:
+Now consider small classes HASH_STORAGE and EXAMPLE:
class HASH_STORAGE feature
diff --git a/documentation/trunk/solutions/gui-building/eiffelvision-2/Vison2_howto/How-to-build-a-concurrent-graphical-application--EiffelVision-with-SCOOP.wiki b/documentation/trunk/solutions/gui-building/eiffelvision-2/Vison2_howto/How-to-build-a-concurrent-graphical-application--EiffelVision-with-SCOOP.wiki
index 178a482c..2fc73005 100644
--- a/documentation/trunk/solutions/gui-building/eiffelvision-2/Vison2_howto/How-to-build-a-concurrent-graphical-application--EiffelVision-with-SCOOP.wiki
+++ b/documentation/trunk/solutions/gui-building/eiffelvision-2/Vison2_howto/How-to-build-a-concurrent-graphical-application--EiffelVision-with-SCOOP.wiki
@@ -1,6 +1,3 @@
-[[Property:modification_date|Mon, 15 Feb 2021 09:17:32 GMT]]
-[[Property:publication_date|Mon, 15 Feb 2021 09:17:32 GMT]]
-[[Property:link_title|... build with SCOOP]]
[[Property:uuid|D1DDF411-5387-4A81-9A85-3EF8A2A4220D]]
[[Property:weight|0]]
[[Property:title|How to build a concurrent graphical application: EiffelVision with SCOOP]]
diff --git a/documentation/trunk/solutions/gui-building/eiffelvision-2/Vison2_howto/Triggering-Pick-and-Drop.wiki b/documentation/trunk/solutions/gui-building/eiffelvision-2/Vison2_howto/Triggering-Pick-and-Drop.wiki
index 57ef5ec5..c57d763f 100644
--- a/documentation/trunk/solutions/gui-building/eiffelvision-2/Vison2_howto/Triggering-Pick-and-Drop.wiki
+++ b/documentation/trunk/solutions/gui-building/eiffelvision-2/Vison2_howto/Triggering-Pick-and-Drop.wiki
@@ -1,9 +1,9 @@
-[[Property:modification_date|Mon, 15 Feb 2021 09:18:27 GMT]]
+[[Property:modification_date|Thu, 11 Feb 2021 18:02:19 GMT]]
[[Property:publication_date|Tue, 09 Feb 2021 18:31:11 GMT]]
[[Property:uuid|53571D42-854B-40C2-A98D-A1A5EF5DDA3B]]
[[Property:weight|0]]
[[Property:title|Triggering Pick-and-Drop]]
-[[Property:link_title|... trigger PnD]]
+[[Property:link_title|Triggering PnD]]
= Triggering Eiffel's Pick-and-Drop Mechanism =
== Introduction ==
diff --git a/documentation/trunk/solutions/gui-building/eiffelvision-2/Vison2_howto/converting-eiffelvision-2-systems-void-safety.wiki b/documentation/trunk/solutions/gui-building/eiffelvision-2/Vison2_howto/converting-eiffelvision-2-systems-void-safety.wiki
index 0beb0efa..9f7586a6 100644
--- a/documentation/trunk/solutions/gui-building/eiffelvision-2/Vison2_howto/converting-eiffelvision-2-systems-void-safety.wiki
+++ b/documentation/trunk/solutions/gui-building/eiffelvision-2/Vison2_howto/converting-eiffelvision-2-systems-void-safety.wiki
@@ -1,12 +1,9 @@
-[[Property:modification_date|Mon, 15 Feb 2021 11:57:46 GMT]]
-[[Property:publication_date|Mon, 15 Feb 2021 09:18:59 GMT]]
-[[Property:link_title|... make void-safe]]
[[Property:title|Converting EiffelVision 2 Systems to Void-Safety]]
[[Property:weight|1]]
[[Property:uuid|96e01318-700b-da6e-42d1-14fee219daf5]]
==Introduction==
-In order to convert systems that employ EiffelVision 2 (Vision2) to [[Void-safe programming|void-safety]], some adjustments may be needed depending on its usage. This page describes the various usage scenarios of Vision2 that will need to be converted in order to adhere to void-safety.
+In order to convert systems that employ EiffelVision 2 (Vision2) to [[Void-safe Programming in Eiffel|void-safety]], some adjustments may be needed depending on its usage. This page describes the various usage scenarios of Vision2 that will need to be converted in order to adhere to void-safety.
==Inheritance Purely from an Interface Class==