Re: adding smalltalk-mode to ELPA?

Stefan Monnier <[email protected]>
Newsgroups gmane.comp.lang.smalltalk.gnu.general
Message-ID <[email protected]>
>>> Anyway, from what I understand, you have no intention of moving
>>> smalltalk-mode.el elsewhere nor to spend your time with a 2-way sync.
>>> In that case, I think it's best not to add smalltalk-mode.el to GNU
>>> ELPA to avoid the risk of a fork.
>> i am not a member of the smalltalk dev team, they are listed on
>> savannah[1] - i was only offering some general observations,
>> anticipating what i would expect to be the response of most upstreams
>> when asked to to do the things you are suggesting
> I am currently not a GNU Emacs user and as a result have been quiet on
> this topic.
> There seems to be benefit[1] to move the smalltalk-model.el into the GNU
> ELPA repository.  I can check what rms wrote but I need one of you to do
> the actual move.

Here's what I suggest:
- I used `filter-branch` to get a Git branch which only contains the
  Elisp files of the GNU Smalltalk distribution
  (i.e. smalltalk-mode.el, gst-mode.el.in, and
  smalltalk-mode-init.el.in, but not snprintfv/doc/gnome-doc.el which
  seems unrelated).
- I wrote the tentative patch below which converts gst-mode.el.in to
  gst-mode.el (by assuming `gst` can be found in $PATH), and moves the
  content of smalltalk-mode-init.el.in into smalltalk-mode.el (with
  autoload annotations so that these get executed at startup when the
  smalltalk-mode package is activated rather than only later when/if the
  smalltalk-mode.el file is loaded).  It also slightly reformats the
  copyright blurbs to better follow the conventions and changes the
  GPLv2+ to GPLv3+.

I can add the result to elpa.git (from where elpa.gnu.org will create
a GNU ELPA package).  As things stand, this package would be labeled
"version 3.2.92".

If you disagree with some part of the patch below, feel free to point it
out so I can adjust it.

After that's done, I guess you could annotate your copy of those files
with a blurb explaining that the upstream version of the code can be
found in http://elpa.gnu.org/packages/smalltalk-mode.html.

Does that sound good?


        Stefan


diff --git a/.gitignore b/.gitignore
new file mode 100644
index 000000000..fcf24f130
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,3 @@
+*.elc
+smalltalk-mode-pkg.el
+smalltalk-mode-autoloads.el
diff --git a/gst-mode.el.in b/gst-mode.el
similarity index 91%
rename from gst-mode.el.in
rename to gst-mode.el
index 15713acdd..02f820d9c 100644
--- a/gst-mode.el.in
+++ b/gst-mode.el
@@ -1,29 +1,31 @@
+;;; gst-mode.el --- Interaction with GNU Smalltalk subprocess
+;;
+;; Copyright 1988-2019  Free Software Foundation, Inc.
+;; Written by Steve Byrne.
+;;
+;; This file is part of GNU Smalltalk.
+;;
+;; GNU Smalltalk is free software; you can redistribute it and/or modify it
+;; under the terms of the GNU General Public License as published by the Free
+;; Software Foundation; either version 3, or (at your option) any later
+;; version.
+;;
+;; GNU Smalltalk is distributed in the hope that it will be useful, but
+;; WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+;; or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+;; for more details.
+;;
+;; You should have received a copy of the GNU General Public License
+;; along with this program.  If not, see <http://www.gnu.org/licenses/>.
+;;
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;
-;;; Copyright 1988-92, 1994-95, 1999, 2000, 2003, 2007, 2008
-;;; Free Software Foundation, Inc.
-;;; Written by Steve Byrne.
-;;;
-;;; This file is part of GNU Smalltalk.
-;;;
-;;; GNU Smalltalk is free software; you can redistribute it and/or modify it
-;;; under the terms of the GNU General Public License as published by the Free
-;;; Software Foundation; either version 2, or (at your option) any later 
-;;; version.
-;;;
-;;; GNU Smalltalk is distributed in the hope that it will be useful, but
-;;; WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
-;;; or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-;;; for more details.
-;;;
-;;; You should have received a copy of the GNU General Public License along
-;;; with GNU Smalltalk; see the file COPYING.  If not, write to the Free
-;;; Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 
-;;; Incorporates Frank Caggiano's changes for Emacs 19.
-;;; Updates and changes for Emacs 20 and 21 by David Forster
+;;; Commentary:
+
+;; Incorporates Frank Caggiano's changes for Emacs 19.
+;; Updates and changes for Emacs 20 and 21 by David Forster
+
+;;; Code:
 
 (require 'comint)
 
@@ -32,7 +34,7 @@
 
 (defvar *gst-process* nil
   "Holds the GNU Smalltalk process")
-(defvar gst-program-name "@bindir@/gst -V"
+(defvar gst-program-name "gst -V"
   "GNU Smalltalk command to run.  Do not use the -a, -f or -- options.")
 
 (defvar smalltalk-command-string nil
@@ -63,6 +65,7 @@
     keymap)
   "Keymap used in Smalltalk interactor mode.")
 
+;;;###autoload
 (defun gst (command-line)
   "Invoke GNU Smalltalk"
   (interactive (list (if (null current-prefix-arg)
diff --git a/smalltalk-mode-init.el.in b/smalltalk-mode-init.el.in
deleted file mode 100644
index a2dbef9d4..000000000
--- a/smalltalk-mode-init.el.in
+++ /dev/null
@@ -1,19 +0,0 @@
-;; Autoload file for smalltalk-mode
-
-;; duplicate zip files' setup for star files or fall back on
-;; archive-mode, which scans file contents to determine type so is
-;; safe to use
-(push (cons "\\.star\\'"
-	    (catch 'archive-mode
-	      (dolist (mode-assoc auto-mode-alist 'archive-mode)
-		(and (string-match (car mode-assoc) "Starfile.zip")
-		     (functionp (cdr mode-assoc))
-		     (throw 'archive-mode (cdr mode-assoc))))))
-      auto-mode-alist)
-
-(if (boundp 'inhibit-local-variables-regexps)
-    (push "\\.star\\'" inhibit-local-variables-regexps)
-    (push "\\.star\\'" inhibit-first-line-modes-regexp))
-
-@WITH_EMACS_COMINT_TRUE@(autoload 'gst "@lispdir@/gst-mode.elc" "" t)
-
diff --git a/smalltalk-mode.el b/smalltalk-mode.el
index 6eb3b566c..e92d410b2 100644
--- a/smalltalk-mode.el
+++ b/smalltalk-mode.el
@@ -2,14 +2,13 @@
 
 ;; Author: Steve Byrne
 ;; Version: 3.2.92
-;; Copyright 1988-92, 1994-95, 1999, 2000, 2003, 2007, 2008, 2009
-;; Free Software Foundation, Inc.
+;; Copyright 1988-2019  Free Software Foundation, Inc.
 
 ;; This file is part of GNU Smalltalk.
 
 ;; GNU Smalltalk is free software; you can redistribute it and/or modify it
 ;; under the terms of the GNU General Public License as published by the Free
-;; Software Foundation; either version 2, or (at your option) any later
+;; Software Foundation; either version 3, or (at your option) any later
 ;; version.
 
 ;; GNU Smalltalk is distributed in the hope that it will be useful, but
@@ -231,6 +230,27 @@ Commands:
 ;;;###autoload
 (add-to-list 'auto-mode-alist '("\\.st\\'" . smalltalk-mode))
 
+;; GNU Smalltalk uses files with name `.star' which use the zip format.
+;; Duplicate zip files' setup for star files or fall back on
+;; archive-mode, which scans file contents to determine type so is
+;; safe to use.
+;;;###autoload
+(add-to-list
+ 'auto-mode-alist
+ (cons "\\.star\\'"
+       (catch 'archive-mode
+	 (dolist (mode-assoc auto-mode-alist 'archive-mode)
+	   (and (string-match (car mode-assoc) "Starfile.zip")
+		(functionp (cdr mode-assoc))
+		(throw 'archive-mode (cdr mode-assoc)))))))
+
+;;;###autoload
+(add-to-list (if (boundp 'inhibit-local-variables-regexps)
+                 'inhibit-local-variables-regexps
+               'inhibit-first-line-modes-regexp)
+             "\\.star\\'")
+
+
 (defun smalltalk-tab ()
   (interactive)
   (let (col)
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.