Skip to content

Commit

Permalink
Merge branch 'uniconproject:master' into keywordproc
Browse files Browse the repository at this point in the history
  • Loading branch information
brucerennie authored Oct 8, 2021
2 parents b7d319b + 9e2dfd2 commit c715f76
Show file tree
Hide file tree
Showing 7 changed files with 211 additions and 4 deletions.
22 changes: 19 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -60,10 +60,10 @@ be turned on by doing `--enable-FEATURE`, for example, to enable operator overlo
```
--configure --enable-ovld
```
On other aspect to consider is that the configure script is opporuntitic when it comes to turning on features.
One other aspect to consider is that the configure script is opportunistic when it comes to turning on features.
Features that are enabled by default will be disabled automatically if they are missing dependencies. If you want
to change the behavior to make the configure script stop instead of skipping a feature when its dependcies are
missing, just enable that feature explicitly. For example, if you want to enable https/ssl, do:
to change the behavior to make the configure script stop with an error instead of skipping a feature when its
dependencies are missing, just enable that feature explicitly. For example, if you want to enable https/ssl, do:
```
./configure --enable-ssl
```
Expand All @@ -78,6 +78,22 @@ For example, on a Debian system
```
sudo apt install build-essential
```
Optionally, you can install development library dependencies to enable more Unicon features.
Most of these libraries are listed below for common Linux distibutions.

Debian/Ubuntu:
```
apt install libgl1-mesa-glx libssl-dev libx11-dev libjpeg-dev libpng-dev libglu1-mesa-dev
libxft-dev libopenal-dev libalut-dev libogg-dev libvorbis-dev unixodbc-dev
libfreetype6-dev
```
Fedora/Centos (Depending on your Centos version, you may need to replace dnf with yum):
```
dnf install libjpeg-turbo-devel libpng-devel libX11-devel mesa-libGL-devel mesa-libGLU-devel
freetype-devel openal-devel freealut-devel libogg-devel libvorbis-devel
openssl-devel unixODBC-devel libXft-devel
```

Go into the Unicon directory and run:
```
./configure
Expand Down
14 changes: 14 additions & 0 deletions config/editor/README
Original file line number Diff line number Diff line change
Expand Up @@ -39,3 +39,17 @@ Sublime Text
To get syntax highlighting in Sublime Text copy unicon.sublime-syntax to
~/.config/sublime-text-3/Packages/User/


Notepad++
---------

To get syntax highlighting in Notepad++, copy unicon-notepad++.light.xml
and/or unicon-notepad++.dark.xml to "%AppData%\Notepad++\userDefineLangs".

After opening an .icn source file, select Unicon-Light or Unicon-Dark from the
"Language", and Notepad++ will remember your selection next time.

To have Notepad++ match the text background color to your theme background color
do the following, click "Settings" then "Style Configurator". Check the box for
"Enable global background color" and then "Save & Close".

64 changes: 64 additions & 0 deletions config/editor/unicon-notepad++.dark.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
<NotepadPlus>
<UserLang name="Unicon-Dark" ext="icn" udlVersion="2.1">
<Settings>
<Global caseIgnored="yes" allowFoldOfComments="no" foldCompact="no" forcePureLC="0" decimalSeparator="0" />
<Prefix Keywords1="no" Keywords2="no" Keywords3="no" Keywords4="no" Keywords5="no" Keywords6="no" Keywords7="no" Keywords8="no" />
</Settings>
<KeywordLists>
<Keywords name="Comments">00# 01 02((EOL)) 03 04</Keywords>
<Keywords name="Numbers, prefix1"></Keywords>
<Keywords name="Numbers, prefix2"></Keywords>
<Keywords name="Numbers, extras1"></Keywords>
<Keywords name="Numbers, extras2"></Keywords>
<Keywords name="Numbers, suffix1"></Keywords>
<Keywords name="Numbers, suffix2"></Keywords>
<Keywords name="Numbers, range"></Keywords>
<Keywords name="Operators1">@&lt; @&gt; @&lt;&lt; @&gt;&gt; ! * + - / \ . ++ ? ~ ^ () &lt; &gt; | || ||| -- ** = ~= == ~== === ~=== .| @ % $$ -&gt; &lt;= &gt;= &lt;&lt; &lt;&lt;= &gt;&gt; &gt;&gt;= &amp;&amp; &amp; ; : ( ) { } ?? := &lt;- :=: &lt;=&gt; :=|| :=||| :=+ :=- :=* :=++ :=-- :=** :=/ :=% :== :=== :==== :=~= :=~== :=~=== :=^ :=? :=&amp; :=@ :=&gt;&gt;= :=&gt;&gt; :=&lt;&lt;= :=&lt;&lt; :=&gt;= :=&gt; :=&lt;= :=&lt;</Keywords>
<Keywords name="Operators2">abstract all break by case class create critical default do else end every fail global if import initial initially invocable link local method next not of package procedure record repeat return static suspend then thread to type until while write close open &amp;allocated &amp;ascii &amp;clock &amp;col &amp;collections &amp;column &amp;control &amp;cset &amp;current &amp;date &amp;dateline &amp;digits &amp;dump &amp;e &amp;errno &amp;error &amp;errornumber &amp;errortext &amp;errorvalue &amp;errout &amp;eventcode &amp;eventsource &amp;eventvalue &amp;fail &amp;features &amp;file &amp;host &amp;input &amp;interval &amp;lcase &amp;ldrag &amp;letters &amp;level &amp;line &amp;lpress &amp;lrelease &amp;main &amp;mdrag &amp;meta &amp;mpress &amp;mrelease &amp;now &amp;null &amp;output &amp;phi &amp;pi &amp;pick &amp;pos &amp;progname &amp;random &amp;rdrag &amp;regions &amp;resize &amp;row &amp;rpress &amp;rrelease &amp;shift &amp;source &amp;storage &amp;subject &amp;time &amp;trace &amp;ucase &amp;version &amp;window &amp;x &amp;y</Keywords>
<Keywords name="Folders in code1, open">{</Keywords>
<Keywords name="Folders in code1, middle"></Keywords>
<Keywords name="Folders in code1, close">}</Keywords>
<Keywords name="Folders in code2, open">if</Keywords>
<Keywords name="Folders in code2, middle">else if</Keywords>
<Keywords name="Folders in code2, close">else</Keywords>
<Keywords name="Folders in comment, open">#</Keywords>
<Keywords name="Folders in comment, middle"></Keywords>
<Keywords name="Folders in comment, close">((EOL))</Keywords>
<Keywords name="Keywords1"></Keywords>
<Keywords name="Keywords2"></Keywords>
<Keywords name="Keywords3"></Keywords>
<Keywords name="Keywords4"></Keywords>
<Keywords name="Keywords5"></Keywords>
<Keywords name="Keywords6"></Keywords>
<Keywords name="Keywords7"></Keywords>
<Keywords name="Keywords8"></Keywords>
<Keywords name="Delimiters">00&quot; 01\ 02&quot; 03. 04 05( 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23</Keywords>
</KeywordLists>
<Styles>
<WordsStyle name="DEFAULT" fgColor="FFFFFF" bgColor="3F3F3E" fontName="" fontStyle="0" nesting="0" />
<WordsStyle name="COMMENTS" fgColor="000000" bgColor="3F3F3E" fontName="" fontStyle="0" nesting="0" />
<WordsStyle name="LINE COMMENTS" fgColor="FF0000" bgColor="3F3F3E" fontName="" fontStyle="0" nesting="0" />
<WordsStyle name="NUMBERS" fgColor="FFFFFF" bgColor="3F3F3E" fontName="" fontStyle="0" nesting="0" />
<WordsStyle name="KEYWORDS1" fgColor="000000" bgColor="3F3F3E" fontName="" fontStyle="0" nesting="0" />
<WordsStyle name="KEYWORDS2" fgColor="000000" bgColor="3F3F3E" fontName="" fontStyle="0" nesting="0" />
<WordsStyle name="KEYWORDS3" fgColor="000000" bgColor="3F3F3E" fontName="" fontStyle="0" nesting="0" />
<WordsStyle name="KEYWORDS4" fgColor="000000" bgColor="3F3F3E" fontName="" fontStyle="0" nesting="0" />
<WordsStyle name="KEYWORDS5" fgColor="000000" bgColor="3F3F3E" fontName="" fontStyle="0" nesting="0" />
<WordsStyle name="KEYWORDS6" fgColor="000000" bgColor="3F3F3E" fontName="" fontStyle="0" nesting="0" />
<WordsStyle name="KEYWORDS7" fgColor="000000" bgColor="3F3F3E" fontName="" fontStyle="0" nesting="0" />
<WordsStyle name="KEYWORDS8" fgColor="000000" bgColor="3F3F3E" fontName="" fontStyle="0" nesting="0" />
<WordsStyle name="OPERATORS" fgColor="C879FF" bgColor="3F3F3E" fontName="" fontStyle="0" nesting="0" />
<WordsStyle name="FOLDER IN CODE1" fgColor="8080FF" bgColor="3F3F3E" fontName="" fontStyle="0" nesting="0" />
<WordsStyle name="FOLDER IN CODE2" fgColor="0080FF" bgColor="3F3F3E" fontName="" fontStyle="4" nesting="0" />
<WordsStyle name="FOLDER IN COMMENT" fgColor="FF0000" bgColor="3F3F3E" fontName="" fontStyle="0" nesting="0" />
<WordsStyle name="DELIMITERS1" fgColor="6464FF" bgColor="3F3F3E" fontName="" fontStyle="0" nesting="0" />
<WordsStyle name="DELIMITERS2" fgColor="C879FF" bgColor="3F3F3E" fontName="" fontStyle="0" nesting="0" />
<WordsStyle name="DELIMITERS3" fgColor="C879FF" bgColor="3F3F3E" fontName="" fontStyle="0" nesting="0" />
<WordsStyle name="DELIMITERS4" fgColor="C879FF" bgColor="3F3F3E" fontName="" fontStyle="0" nesting="50331650" />
<WordsStyle name="DELIMITERS5" fgColor="000000" bgColor="3F3F3E" fontName="" fontStyle="0" nesting="0" />
<WordsStyle name="DELIMITERS6" fgColor="000000" bgColor="3F3F3E" fontName="" fontStyle="0" nesting="0" />
<WordsStyle name="DELIMITERS7" fgColor="000000" bgColor="3F3F3E" fontName="" fontStyle="0" nesting="0" />
<WordsStyle name="DELIMITERS8" fgColor="000000" bgColor="3F3F3E" fontName="" fontStyle="0" nesting="0" />
</Styles>
</UserLang>
</NotepadPlus>
64 changes: 64 additions & 0 deletions config/editor/unicon-notepad++.light.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
<NotepadPlus>
<UserLang name="Unicon-Light" ext="icn" udlVersion="2.1">
<Settings>
<Global caseIgnored="yes" allowFoldOfComments="no" foldCompact="no" forcePureLC="0" decimalSeparator="0" />
<Prefix Keywords1="no" Keywords2="no" Keywords3="no" Keywords4="no" Keywords5="no" Keywords6="no" Keywords7="no" Keywords8="no" />
</Settings>
<KeywordLists>
<Keywords name="Comments">00# 01 02((EOL)) 03 04</Keywords>
<Keywords name="Numbers, prefix1"></Keywords>
<Keywords name="Numbers, prefix2"></Keywords>
<Keywords name="Numbers, extras1"></Keywords>
<Keywords name="Numbers, extras2"></Keywords>
<Keywords name="Numbers, suffix1"></Keywords>
<Keywords name="Numbers, suffix2"></Keywords>
<Keywords name="Numbers, range"></Keywords>
<Keywords name="Operators1">@&lt; @&gt; @&lt;&lt; @&gt;&gt; ! * + - / \ . ++ ? ~ ^ () &lt; &gt; | || ||| -- ** = ~= == ~== === ~=== .| @ % $$ -&gt; &lt;= &gt;= &lt;&lt; &lt;&lt;= &gt;&gt; &gt;&gt;= &amp;&amp; &amp; ; : ( ) { } ?? := &lt;- :=: &lt;=&gt; :=|| :=||| :=+ :=- :=* :=++ :=-- :=** :=/ :=% :== :=== :==== :=~= :=~== :=~=== :=^ :=? :=&amp; :=@ :=&gt;&gt;= :=&gt;&gt; :=&lt;&lt;= :=&lt;&lt; :=&gt;= :=&gt; :=&lt;= :=&lt;</Keywords>
<Keywords name="Operators2">abstract all break by case class create critical default do else end every fail global if import initial initially invocable link local method next not of package procedure record repeat return static suspend then thread to type until while write close open &amp;allocated &amp;ascii &amp;clock &amp;col &amp;collections &amp;column &amp;control &amp;cset &amp;current &amp;date &amp;dateline &amp;digits &amp;dump &amp;e &amp;errno &amp;error &amp;errornumber &amp;errortext &amp;errorvalue &amp;errout &amp;eventcode &amp;eventsource &amp;eventvalue &amp;fail &amp;features &amp;file &amp;host &amp;input &amp;interval &amp;lcase &amp;ldrag &amp;letters &amp;level &amp;line &amp;lpress &amp;lrelease &amp;main &amp;mdrag &amp;meta &amp;mpress &amp;mrelease &amp;now &amp;null &amp;output &amp;phi &amp;pi &amp;pick &amp;pos &amp;progname &amp;random &amp;rdrag &amp;regions &amp;resize &amp;row &amp;rpress &amp;rrelease &amp;shift &amp;source &amp;storage &amp;subject &amp;time &amp;trace &amp;ucase &amp;version &amp;window &amp;x &amp;y</Keywords>
<Keywords name="Folders in code1, open">{</Keywords>
<Keywords name="Folders in code1, middle"></Keywords>
<Keywords name="Folders in code1, close">}</Keywords>
<Keywords name="Folders in code2, open">if</Keywords>
<Keywords name="Folders in code2, middle">else if</Keywords>
<Keywords name="Folders in code2, close">else</Keywords>
<Keywords name="Folders in comment, open">#</Keywords>
<Keywords name="Folders in comment, middle"></Keywords>
<Keywords name="Folders in comment, close">((EOL))</Keywords>
<Keywords name="Keywords1"></Keywords>
<Keywords name="Keywords2"></Keywords>
<Keywords name="Keywords3"></Keywords>
<Keywords name="Keywords4"></Keywords>
<Keywords name="Keywords5"></Keywords>
<Keywords name="Keywords6"></Keywords>
<Keywords name="Keywords7"></Keywords>
<Keywords name="Keywords8"></Keywords>
<Keywords name="Delimiters">00&quot; 01\ 02&quot; 03. 04 05( 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23</Keywords>
</KeywordLists>
<Styles>
<WordsStyle name="DEFAULT" fgColor="000000" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" />
<WordsStyle name="COMMENTS" fgColor="000000" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" />
<WordsStyle name="LINE COMMENTS" fgColor="FF0000" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" />
<WordsStyle name="NUMBERS" fgColor="000000" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" />
<WordsStyle name="KEYWORDS1" fgColor="00FFFF" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" />
<WordsStyle name="KEYWORDS2" fgColor="000000" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" />
<WordsStyle name="KEYWORDS3" fgColor="000000" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" />
<WordsStyle name="KEYWORDS4" fgColor="000000" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" />
<WordsStyle name="KEYWORDS5" fgColor="000000" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" />
<WordsStyle name="KEYWORDS6" fgColor="000000" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" />
<WordsStyle name="KEYWORDS7" fgColor="000000" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" />
<WordsStyle name="KEYWORDS8" fgColor="000000" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" />
<WordsStyle name="OPERATORS" fgColor="8500DD" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" />
<WordsStyle name="FOLDER IN CODE1" fgColor="8500DD" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" />
<WordsStyle name="FOLDER IN CODE2" fgColor="0080FF" bgColor="FFFFFF" fontName="" fontStyle="4" nesting="0" />
<WordsStyle name="FOLDER IN COMMENT" fgColor="FF0000" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" />
<WordsStyle name="DELIMITERS1" fgColor="0000FF" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" />
<WordsStyle name="DELIMITERS2" fgColor="8500DD" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" />
<WordsStyle name="DELIMITERS3" fgColor="8500DD" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" />
<WordsStyle name="DELIMITERS4" fgColor="8500DD" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="50331650" />
<WordsStyle name="DELIMITERS5" fgColor="000000" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" />
<WordsStyle name="DELIMITERS6" fgColor="000000" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" />
<WordsStyle name="DELIMITERS7" fgColor="000000" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" />
<WordsStyle name="DELIMITERS8" fgColor="000000" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" />
</Styles>
</UserLang>
</NotepadPlus>
1 change: 1 addition & 0 deletions doc/book/diffs.tex
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
\chapter{Differences between Icon and Unicon}

\label{Unicon-Icon}
This appendix summarizes the known differences between Arizona Icon and
Unicon. Since the language has myriad additions covered by the whole book,
the emphasis of this page is on {\em incompatibilities\/} that might
Expand Down
48 changes: 48 additions & 0 deletions doc/book/experimental.tex
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
\chapter{Experimental Features}

The designers of Unicon have taken a very conservative approach when adding to
the language and when changing existing features. With the small number of
exceptions that have been previously noted on page \pageref{Unicon-Icon}, an
Icon program that runs on the final version of Icon (version 9.5, first released
in 1996) will run on the current Unicon system {\em and give the same results\/}
a quarter of a century later. The conservative approach is continued when
dealing with additions to Unicon; breaking existing Unicon programs by making an
incompatible change to the language is, in most circumstances, considered to be
a very bad thing to do.

Most of the development of Unicon starting from it's progenitor has already been
discussed but there are some more experimental features that are waiting in the
wings. Some of them may never see the light of day in their present form -- or,
perhaps, in any form -- so the most cautious approach is not to rely on any of
them until they make their way from this appendix into the definition of the
language in Appendix A.

Without exception, the experimental features are not enabled by default in a
release build of Unicon -- they can only be accessed by making the appropriate
pre-processor definitions (or, in some cases, by specifying additional arguments
to \texttt{configure}) and rebuilding the system from the source code. Some
features that are now part of the language -- for example, the array extension
to lists that makes them faster in many cases -- are still guarded by
pre-processor definitions, showing their pedigree as experimental additions, but
are now enabled by default.

%% Candidates for inclusion
%%
%% Plugins
%% User defined operators
%% UTF-8
%% Extensions to &random

\section{User defined operators}
This feature extends the syntax of classes to allow the built-in operator
symbols to be redefined when their operands are objects. It may be enabled by
using the \texttt{-{}-enable-ovld} option to \texttt{configure} before
rebuilding the Unicon system.

\section{Extensions to \texttt{\&random}}
This feature allows the programmer to choose from a portfolio of different
random number generators (in addition to the one provided by Icon). It is also
possible to implement other generators and use them without rebuilding Unicon.
More than one generator may be in use at the same time.
It may be enabled by defining the C preprocessor symbol \texttt{RngLibrary}
before rebuilding the Unicon system.
2 changes: 1 addition & 1 deletion doc/book/ub.tex
Original file line number Diff line number Diff line change
Expand Up @@ -204,7 +204,7 @@ \part{Appendices}
\include{port}
\include{install}
% \include{resourc}

\include{experimental}
\backmatter

\include{referenc}
Expand Down

0 comments on commit c715f76

Please sign in to comment.