help-smalltalk
[Top][All Lists]
Advanced

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

Re: [Help-smalltalk] adding smalltalk-mode to ELPA?


From: Stefan Monnier
Subject: Re: [Help-smalltalk] adding smalltalk-mode to ELPA?
Date: Sun, 07 Apr 2019 13:43:51 -0400
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/27.0.50 (gnu/linux)

>>> 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))
-
address@hidden@(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)



reply via email to

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