emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[elpa] externals/ada-mode 565a08d 1/5: Minor fixes preparing for 7.1.6 r


From: Stephen Leake
Subject: [elpa] externals/ada-mode 565a08d 1/5: Minor fixes preparing for 7.1.6 release
Date: Fri, 30 Jul 2021 19:33:05 -0400 (EDT)

branch: externals/ada-mode
commit 565a08dec71c38306ff496f68b87c7275cedf2d9
Author: Stephen Leake <stephen_leake@stephe-leake.org>
Commit: Stephen Leake <stephen_leake@stephe-leake.org>

    Minor fixes preparing for 7.1.6 release
    
    * NEWS: Doc 7.1.6.
    
    * ada-core.el (ada-prj-select-compiler): Fix byte-compiler style warnings.
    * ada-indent-user-options.el (ada-indent-label):
    * ada-mode.el:
    
    * ada-mode.texi: Clean up, improve.
---
 NEWS                       |   9 +-
 ada-core.el                |  10 +-
 ada-indent-user-options.el |   3 +-
 ada-mode.el                |   2 +-
 ada-mode.texi              | 362 ++++++++++++++++++++++++++++-----------------
 5 files changed, 241 insertions(+), 145 deletions(-)

diff --git a/NEWS b/NEWS
index e0f29b3..559d61b 100644
--- a/NEWS
+++ b/NEWS
@@ -6,10 +6,13 @@ Please send ada-mode bug reports to bug-gnu-emacs@gnu.org, 
with
 'ada-mode' in the subject. If possible, use M-x report-emacs-bug.
 
 
-* Ada Mode 7.1.5
-22 Jul 2021
+* Ada Mode 7.1.6 
+28 Jul 2021
 
-** Uses wisi 3.1.3 for compatibility with FSF gnat 11, Pro gnat 21.
+** Uses wisi 3.1.3 for compatibility with gnat FSF 11, Pro 22,
+   Community 2021.
+
+* Ada Mode 7.1.5 packaging bug
 
 * Ada Mode 7.1.4
 07 Aug 2020
diff --git a/ada-core.el b/ada-core.el
index 85c1787..c0aac0a 100644
--- a/ada-core.el
+++ b/ada-core.el
@@ -1,6 +1,6 @@
 ;;; ada-core.el --- core facilities for ada-mode -*- lexical-binding:t -*-
 
-;; Copyright (C) 1994, 1995, 1997 - 2017, 2019 - 2020  Free Software 
Foundation, Inc.
+;; Copyright (C) 1994, 1995, 1997 - 2017, 2019 - 2021  Free Software 
Foundation, Inc.
 ;;
 ;; Author: Stephen Leake <stephen_leake@member.fsf.org>
 ;; Maintainer: Stephen Leake <stephen_leake@member.fsf.org>
@@ -190,9 +190,15 @@ is the package spec.")
 (defconst ada-refactor-format-paramlist 5)
 
 (defun ada-refactor (action)
+  "Perform refactor action ACTION on symbol at point."
   (wisi-validate-cache (line-end-position -7) (line-end-position 7) t 
'navigate)
   (save-excursion
+    ;; We include punctuation and quote for operators.
     (skip-syntax-backward "w_.\"")
+
+    ;; Skip leading punctuation, for "-Foo.Bar".
+    (skip-syntax-forward ".")
+
     (let* ((edit-begin (point))
           (cache (wisi-goto-statement-start))
           (parse-begin (point))
@@ -712,7 +718,7 @@ Deselects the current project first."
 (make-obsolete 'ada-select-prj-file 'wisi-prj-select-cache "ada-mode 7.0")
 
 (cl-defgeneric ada-prj-select-compiler (compiler project)
-  "PROJECT has been selected; set any project options that are both Ada and 
compiler specific.")
+  "Set PROJECT options that are Ada and compiler specific.")
 
 (cl-defgeneric ada-prj-deselect-compiler (compiler project)
   "PROJECT has been deselected; unset any project options that are both Ada 
and compiler specific.")
diff --git a/ada-indent-user-options.el b/ada-indent-user-options.el
index 0169d00..76a417e 100644
--- a/ada-indent-user-options.el
+++ b/ada-indent-user-options.el
@@ -70,7 +70,8 @@ Otherwise, they are indented as previous comments or code."
 (make-variable-buffer-local 'ada-indent-comment-gnat)
 
 (defcustom ada-indent-label -3
-  "Indentation for a loop, block, or statement label, relative to the item it 
labels.
+  "Indentation for a loop, block, or statement label,
+relative to the item it labels.
 
 Example :
    Label_1 :
diff --git a/ada-mode.el b/ada-mode.el
index 576ebbf..d3c1c2b 100644
--- a/ada-mode.el
+++ b/ada-mode.el
@@ -144,7 +144,7 @@ rather than to the same column."
   :safe #'booleanp)
 
 (defcustom ada-which-func-parse-size 30000
-  "Minimum size of the region surrounding point that is parsed for 
`which-function-mode'."
+  "Minimum size of region around point parsed for `which-function-mode'."
   :group 'ada
   :type 'integer
   :safe #'integerp)
diff --git a/ada-mode.texi b/ada-mode.texi
index 982a0b2..35610be 100644
--- a/ada-mode.texi
+++ b/ada-mode.texi
@@ -107,7 +107,6 @@ Developer overview
 * Directory structure::
 * ELPA::
 * Savannah::
-* ada-france::
 
 @end detailmenu
 @end menu
@@ -166,9 +165,10 @@ supports LSP.
 @node Installation, Customization, Overview, Top
 @chapter Installation
 
-Ada mode requires Emacs 25.0 or greater. Compiling the Ada code for
+Ada mode requires Emacs 25.3 or greater. Compiling the Ada code for
 the external process parser requires GNAT GPL 2017 or later; tested
-with GNAT Community Edition 2019 and GNAT Pro 19.
+with GNAT Community Edition 2021 and GNAT Pro 22.2 (@pxref{Known
+versions}).
 
 Ada mode is distributed in the Gnu ELPA package archive; it can be
 installed via @code{M-x list-packages} (@pxref{Packages,,,emacs,Emacs
@@ -187,18 +187,14 @@ To see what version of Ada mode you have installed, 
invoke @kbd{M-x
 ada-mode-version}.
 
 You must also install the associated Ada executables (for the language
-parser). You may want to install the Ada Reference Manual.
+parser). You may want to install the Ada Reference Manual in info
+format, via the ELPA package ada-ref-man.
 
 @menu
-* Ada Reference Manual::
 * Ada executables::
+* Known versions
 @end menu
 
-@node Ada Reference Manual
-@section Ada Reference Manual
-The ELPA package ada-ref-man includes the Ada Reference Manual and
-Annotated Ada Reference Manual in info format.
-
 @node Ada executables
 @section Ada executables
 
@@ -221,11 +217,19 @@ but supports additional queries.
 Both the parser and @file{gpr_query} require the @code{GNATCOLL}
 library provided by AdaCore, distributed with GNAT GPL 2017 or later,
 and also available at Github
-(@url{https://github.com/AdaCore/gnatcoll}). The notes below assume
-that the compiler is installed at @file{$prefix},
-e.g. @file{/usr/local/gnat-2019}, and that @file{$prefix/bin} is first
-on the @code{PATH}. If you are running Windows, use mingw64
-@code{bash} to run these commands.
+(@url{https://github.com/AdaCore/gnatcoll}). The parser builds with
+the gnatcoll distributed with the gnat compiler. However, that
+gnatcoll does not include the xref package, which is required by
+@file{gpr_query}. So we must build gnatcoll xref from sources
+downloaded from github.
+
+The notes below assume that the compiler is installed at
+@file{$prefix}, e.g. @file{/usr/local/gnat-2019}, and that
+@file{$prefix/bin} is first on the @code{PATH}. If you are running
+Windows, use mingw64 @code{bash} to run these commands.
+
+On some operating systems, we must install gnatcoll-iconv; other
+operating systems don't need it.
 
 On linux, some versions of the @code{GNATCOLL.iconv} package (used by
 @code{gpr_query}, but not the parser) explicitly
@@ -239,6 +243,8 @@ running @code{gpr-query}:
 @example
 (setq gpr-query-env '("LD_LIBRARY_PATH=/Projects/gnat/pro_19.2/lib64")
 @end example
+@c FIXME: is this done by gpr-query-mode or wisi-prj? give example for
+@c wisi-prj setting.
 
 In general, @file{gpr_query} should be compiled with the compiler
 version that is used to generate the user project @file{.ali} files;
@@ -247,10 +253,6 @@ version. @file{gpr_query} creates a database of cross 
reference
 information; that database must be deleted if the compiler version
 changes, to force a complete rebuild.
 
-The default binary gnatcoll distributed with GNAT GPL 2019
-does not include the xref package, which is required by
-@file{gpr_query}. So we must build gnatcoll xref from sources.
-
 @menu
 * Building GNATCOLL::
 * Building the executables::
@@ -264,19 +266,31 @@ Download gnatcoll-db from
 release branch (or the one that matches your compiler), click on the
 ``clone or download'' button, select ``Download ZIP''.
 
+@c branch nn-sustained?
+
 Similarly, download gnatcoll-bindings from
-@url{https://github.com/AdaCore/gnatcoll-bindings/tree/20.2} (for 
gnatcoll-iconv).
+@url{https://github.com/AdaCore/gnatcoll-bindings/tree/20.2} (for
+gnatcoll-iconv; not needed for GNAT Community 2020 on Windows).
+
+@c FIXME: gnatcoll-bindings is in community download Sources
+@c FIXME: table of os/gnat version that need/don't need iconv;
+@c debian/comm-2020 requires gnatcoll-iconv
+@c debian/pro-21.1 requires gnatcoll-iconv
 
-Then unpack, build, and install the required components:
+Then unpack, build, and install the required components. If you are
+unsure whether you need to install iconv, skip that step; a later step
+will complain if it is needed.
 
+@c FIXME: ada-mode uses -gnat2020, which makes one expression in
+@c gnatcoll-sql ambiguous. Change that, and specify -gnat2020 in .gpr
 @example
-tar xf ~/Downloads/gnatcoll-bindings-20.2.zip
+unzip ~/Downloads/gnatcoll-bindings-20.2.zip
 cd gnatcoll-bindings-20.2
 cd iconv
 ./setup.py build
 ./setup.py install
 
-tar xf ~/Downloads/gnatcoll-db-20.2.zip
+unzip ~/Downloads/gnatcoll-db-20.2.zip
 cd gnatcoll-db-20.2
 make -C sql
 make -C sql install
@@ -320,13 +334,173 @@ else, use @code{install.sh --prefix=<dir>}.
 @code{ada-mode} will use @file{gpr_query} and the parser if they are
 found in @code{PATH}.
 
+@node Known versions
+@section Known versions
+Here we list GNAT compiler versions that are known to work or not work
+with ada-mode.
+
+There are various ways to get the compiler:
+@table @samp
+@item Community
+Downloaded from @url{https://www.adacore.com/download}. The version
+number is the release year.
+
+This version is provided by AdaCore, but they do not support users
+using it.
+
+@item Pro
+Downloaded from AdaCore via a support subscription. The version number
+is the last two digits of the release year, followed by a patch
+release digit.
+
+This version is provided by AdaCore, and they support users using it.
+
+@item FSF
+Installed via a free software package manager, typically as part of
+the ``gcc'' package. The version number is the same as the gcc
+version, something like ``10.3.0'', possibly followed by a date.
+
+This version is derived from some AdaCore version, but is typically
+not identical to a released version. It may be supported by the
+packager.
+@end table
+
+Sometimes compiler versions change what code they accept, particularly
+in the area of access types. So some compiler versions may require
+minor edits of the code; there is a ``WORKAROUND'' comment in the code
+describing the edit required.
+
+Compiler versions that work:
+@table @samp
+@item Community 2019
+Reports an error about a dangling reference; see WORKAROUND comment in
+@file{~/.emacs.d/elpa/wisi-i.j.k/sal-gen_unbounded_definite_red_black_trees.adb}
+
+@item Community 2020
+no edits required
+
+@item Pro 20.2
+no edits required
+
+@item FSF 11.1.0
+@end table
+
+Compiler versions that fail:
+@table @samp
+@item FSF gnat 10.2.1 20210110
+ada-mode uses compiler option -gnat2020; that causes bogus failures
+with this version of gnat. Reported at 
@url{https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99099}
+@end table
+
 @node Customization, Compiling Executing, Installation, Top
 @chapter Customizing Ada mode
 
-Here we assume you are familiar with setting variables in Emacs,
-either thru 'customize' or in elisp (in your @file{.emacs} file). For
-a basic introduction to customize, elisp, and Emacs in general, see
-the tutorial (@kbd{C-h t}).
+All user-settable Ada mode variables can be set via the menu @samp{Ada
+| Customize}; some can also be set in wisi project files
+(@pxref{Project files}).
+
+To modify a specific variable, you can directly call the function
+@code{customize-variable}; just type @kbd{M-x customize-variable
+@key{RET} @var{variable-name} @key{RET}}.
+
+Alternately, you can specify variable settings in the Emacs
+configuration file, @file{~/.emacs}. This file is coded in Emacs lisp,
+and the syntax to set a variable is the following:
+
+@example
+(setq variable-name value)
+@end example
+
+ada-mode variables that you might consider changing:
+@table @code
+@item Matching end names
+By default, the option @code{ada-end-name-optional} is set to
+@code{t}, which matches the Ada standard. This is useful for new Ada
+users. Experienced users that follow a
+   style guide requiring matching end names should set this to 't',
+   since that gives better error correction.
+
+@end table
+
+Some general (non ada-mode) Emacs settings that are useful for Ada files:
+
+@table @code
+@item context menu
+By default, the context menu is bound to @key{C-down-mouse-3},
+i.e. control-right-click. @key{down-mouse-3} is already bound in the
+global map; you can override that global binding in the
+@code{ada-mode-hook} (see below for code).
+@item other-frame-window-mode
+Ada mode does not provide any @code{other-frame} or
+@code{other-window} variants of user operations. Instead, it is
+recommended to use the Gnu ELPA package @code{other-frame-window}.
+@item delete-trailing-whitespace
+Deletes space, tab at end of line and blank lines at end of buffer.
+@item xref configuration
+@table @code
+@item xref-prompt-for-identifier
+Set to @code{nil} to be prompted less when finding definitions or
+references.
+@item xref-show-xrefs-function
+Determine placement of the window where references are shown.
+@item xref-show-definitions-function
+Determine placement of the window where definitions are shown.
+@item xref--transient-buffer-mode-map
+keymap used in some xref windows; you may want to disable the
+@key{RET} binding there.
+@end table
+@item untabify
+Deletes tab characters that have crept into the file.
+@item indent-tabs-mode
+Don't insert tab characters when indenting.
+@item copyright-update
+Updates the copyright date in the file header comment, to the current
+year.
+@item electric-pair-mode
+Insert a matching right paren when you type a left paren.
+@item hippie-expand
+Bind @code{hippie-expand} to a key; it expands the word before point,
+using words from current buffer, other buffers, file names, etc; see
+@code{hippie-expand-try-functions-list}. You can also add
+@code{wisi-skel-hippie-try} to that list. Note that
+@code{wisi-skel-expand} is bound to @key{C-c C-e} (@pxref{Statement
+skeletons}).
+@item imenu
+Navigate to subprograms and types by name, from a minibuffer menu.
+@item speedbar
+Navigate to subprograms and types by name, from a list in a dedicated window.
+@item which-func
+Display the current subprogram name in the mode bar.
+@end table
+
+The above can all be set by the following code in your
+@file{~/.emacs}. Note that some are functions are added to
+@code{before-save-hook}; they run just before a buffer is written to
+disk. Also, the order is important; ada-mode does not set up the
+Ada-specific features of imenu and speedbar unless imenu is loaded
+first.
+
+@example
+(setq-default indent-tabs-mode nil)
+(define-key xref--transient-buffer-mode-map (kbd "RET") 'xref-goto-xref)
+(setq xref-prompt-for-identifier nil) ;; only prompt on C-u
+(setq xref-show-xrefs-function #'xref--show-defs-buffer-at-bottom)
+(setq xref-show-definitions-function #'xref--show-defs-buffer-at-bottom)
+
+(electric-pair-mode 1)
+(require 'imenu) ;; also enables speedbar
+(require 'ada-mode)
+(add-to-list 'hippie-expand-try-functions-list 'wisi-skel-hippie-try)
+(define-key ada-mode-map "\C-e"     'hippie-expand)
+(define-key ada-mode-map [down-mouse-3] 'ada-popup-menu)
+(add-hook 'ada-mode-hook
+   (lambda ()
+    (add-hook 'before-save-hook 'delete-trailing-whitespace nil t)
+    (add-hook 'before-save-hook 'copyright-update nil t)
+    (add-hook 'before-save-hook
+              (lambda () (untabify (point-min) (point-max)))
+               nil t)))
+@end example
 
 @menu
 * Slow response::
@@ -471,102 +645,6 @@ See @file{ada-gnat-xref.el} and @file{gpr-query.el} for 
examples.
 @node Other customization,  , Other cross-reference, Customization
 @section Other customization
 
-All user-settable Ada mode variables can be set via the menu @samp{Ada
-| Customize}; some can also be set in wisi project files
-(@pxref{Project files}).
-
-To modify a specific variable, you can directly call the function
-@code{customize-variable}; just type @kbd{M-x customize-variable
-@key{RET} @var{variable-name} @key{RET}}.
-
-Alternately, you can specify variable settings in the Emacs
-configuration file, @file{~/.emacs}. This file is coded in Emacs lisp,
-and the syntax to set a variable is the following:
-
-@example
-(setq variable-name value)
-@end example
-
-Some general Emacs settings that are useful for Ada files:
-
-@table @code
-@item context menu
-By default, the context menu is bound to @key{C-down-mouse-3},
-i.e. control-right-click. @key{down-mouse-3} is already bound in the
-global map; you can override that global binding in the
-@code{ada-mode-hook} (see below for code).
-@item other-frame-window-mode
-Ada mode does not provide any @code{other-frame} or
-@code{other-window} variants of user operations. Instead, it is
-recommended to use the Gnu ELPA package @code{other-frame-window}.
-@item delete-trailing-whitespace
-Deletes space, tab at end of line and blank lines at end of buffer.
-@item xref configuration
-@table @code
-@item xref-prompt-for-identifier
-Set to @code{nil} to be prompted less when finding definitions or
-references.
-@item xref-show-xrefs-function
-Determine placement of the window where references are shown.
-@item xref-show-definitions-function
-Determine placement of the window where definitions are shown.
-@item xref--transient-buffer-mode-map
-keymap used in some xref windows; you may want to disable the
-@key{RET} binding there.
-@end table
-@item untabify
-Deletes tab characters that have crept into the file.
-@item indent-tabs-mode
-Don't insert tab characters when indenting.
-@item copyright-update
-Updates the copyright date in the file header comment, to the current
-year.
-@item electric-pair-mode
-Insert a matching right paren when you type a left paren.
-@item hippie-expand
-Bind @code{hippie-expand} to a key; it expands the word before point,
-using words from current buffer, other buffers, file names, etc; see
-@code{hippie-expand-try-functions-list}. You can also add
-@code{wisi-skel-hippie-try} to that list. Note that
-@code{wisi-skel-expand} is bound to @key{C-c C-e} (@pxref{Statement
-skeletons}).
-@item imenu
-Navigate to subprograms and types by name, from a minibuffer menu.
-@item speedbar
-Navigate to subprograms and types by name, from a list in a dedicated window.
-@item which-func
-Display the current subprogram name in the mode bar.
-@end table
-
-The above can all be set by the following code in your
-@file{~/.emacs}. Note that some are functions are added to
-@code{before-save-hook}; they run just before a buffer is written to
-disk. Also, the order is important; ada-mode does not set up the
-Ada-specific features of imenu and speedbar unless imenu is loaded
-first.
-
-@example
-(setq-default indent-tabs-mode nil)
-(define-key xref--transient-buffer-mode-map (kbd "RET") 'xref-goto-xref)
-(setq xref-prompt-for-identifier nil) ;; only prompt on C-u
-(setq xref-show-xrefs-function #'xref--show-defs-buffer-at-bottom)
-(setq xref-show-definitions-function #'xref--show-defs-buffer-at-bottom)
-
-(electric-pair-mode 1)
-(require 'imenu) ;; also enables speedbar
-(require 'ada-mode)
-(add-to-list 'hippie-expand-try-functions-list 'wisi-skel-hippie-try)
-(define-key ada-mode-map "\C-e"     'hippie-expand)
-(define-key ada-mode-map [down-mouse-3] 'ada-popup-menu)
-(add-hook 'ada-mode-hook
-   (lambda ()
-    (add-hook 'before-save-hook 'delete-trailing-whitespace nil t)
-    (add-hook 'before-save-hook 'copyright-update nil t)
-    (add-hook 'before-save-hook
-              (lambda () (untabify (point-min) (point-max)))
-               nil t)))
-@end example
-
 @node Compiling Executing, Project files, Customization, Top
 @chapter Compiling Executing
 
@@ -2068,7 +2146,6 @@ sources, here's an overview.
 * Directory structure::
 * ELPA::
 * Savannah::
-* ada-france::
 @end menu
 
 @node Directory structure
@@ -2087,15 +2164,13 @@ Byte-compiled elisp files, not in the distribution. 
Generated by the
 Makefile target @code{byte-compile}, or by the Emacs package installer.
 
 @item *.ad?
-Ada code for the external process parser, some generated by the
-WisiToken tool @file{wisitoken-bnf-generate.exe}. The generated code
-is in the tarball distribution and the monotone repository so users
-and Elisp developers don't have to install WisiToken.
+Ada code for the external process parser and other tools, some
+generated by the WisiToken tool @file{wisitoken-bnf-generate.exe}.
 
 @item *.parse_table
-Diagnostic output from @file{wisitoken-bnf-generate.exe}, useful for tracing
-parses while debugging a grammar issue. Not in the tarball
-distribution or the monotone repository.
+Diagnostic output from @file{wisitoken-bnf-generate.exe}, useful for
+tracing parses while debugging a grammar issue. Not in any
+distribution.
 
 @item *.wy
 Grammar files, specifying the language to be parsed. The syntax for
@@ -2165,7 +2240,7 @@ More tests; allows testing path search features.
 Ada mode is published via the Gnu ELPA archive. To test a new version
 of Ada mode, we use a local Gnu ELPA archive. That requires fetching
 Gnu ELPA via git:
-
+@c FIXME: this is wrong
 @example
 cd /Projects
 git clone git://git.savannah.gnu.org/emacs/elpa.git
@@ -2184,16 +2259,27 @@ the elpa workspace, and for building the elpa archive 
there.
 @node Savannah
 @section Savannah
 
-The ada-mode web page, mailing list, and tarball download are hosted
-on savannah.non-gnu.org, project Emacs Ada mode
+The ada-mode git repository, web page, mailing list, and tarball
+download are hosted on savannah.non-gnu.org, project Emacs Ada mode
 (@url{https://savannah.nongnu.org/projects/ada-mode/}). See the
 project admin page there for more information.
 
-@node ada-france
-@section ada-france
+To checkout all source required to build and test ada-mode, assuming you have
+ssh read/write git access to savannah ada-mode:
+
+@example
+git clone stephen_leake@@git.sv.gnu.org:/srv/git/ada-mode.git \
+    -b org.emacs.ada-mode org.emacs.ada-mode
+cd ada-mode
+git worktree add -b org.wisitoken ../org.wisitoken origin/org.wisitoken
+git worktree add -b org.stephe_leake.sal ../org.stephe_leake.sal 
origin/org.stephe_leake.sal
+git worktree add -b org.stephe_leake.aunit_ext ../org.stephe_leake.aunit_ext 
origin/org.stephe_leake.aunit_ext
+git worktree add -b org.stephe_leake.makerules ../org.stephe_leake.makerules 
origin/org.stephe_leake.makerules
+@end example
 
-The source code for ada-mode is maintained in a monotone repository in
-the ada-france server @url{mtn://www.ada-france.org}.
+In each worktree, there is a @file{build} directory containing the
+Makefile and all build outputs. The target 'all' runs all tests and
+build documentation for that worktree.
 
 @node GNU Free Documentation License
 @appendix GNU Free Documentation License



reply via email to

[Prev in Thread] Current Thread [Next in Thread]