branch: elpa/vm
commit f9105cc8333538b114a68ec343ae62a779892329
Merge: 3f3deb718dc cc1ea3762ab
Author: Mark Diekhans <[email protected]>
Commit: Mark Diekhans <[email protected]>
Merge branch 'main' into 'main'
Packaging work for release
See merge request emacs-vm/vm!62
---
.gitignore | 9 -------
INSTALL | 20 ++++++----------
Makefile.in | 65 +++++++++++++++++++++++++++++++++++++++++---------
NEWS | 4 +++-
README.md | 17 +++++++++----
configure.ac | 2 +-
dev/docs/dev-guide.org | 22 +++++++++++++++++
dev/docs/releasing.org | 50 ++++++++++++++++++++++++++++++++++----
info/vm.texinfo | 1 +
lisp/vm.el | 26 +++++++++++---------
10 files changed, 162 insertions(+), 54 deletions(-)
diff --git a/.gitignore b/.gitignore
index af79030249a..e14fd76a000 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,15 +1,6 @@
*.elc
TAGS
configure.lineno
-ChangeLog
-base64-decode
-base64-encode
-qp-decode
-qp-encode
-base64-decode.exe
-base64-encode.exe
-qp-decode.exe
-qp-encode.exe
*.info*
*.diff
*.log
diff --git a/INSTALL b/INSTALL
index 5e9cef2478a..58cef42da17 100644
--- a/INSTALL
+++ b/INSTALL
@@ -1,21 +1,15 @@
-PRE-COMPILED BINARIES
-=====================
+PACKAGE INSTALL
+===============
-If you have downloaded binaries for Gnu Emacs version 22 or 23, you
-can unpack it to a directory, say ~/vm, and go to step (3) below.
+VM releases are avaliable through a non-gnu ELPA package:
-However, this build assumes that you are not using any supporting
-libraries such as BBDB, W3 or W3M. If you are using such libraries,
-please rebuild VM as indicated below.
+ M-x package-install <ret> vm <ret>
-If you are using XEmacs, you need to do your own build.
-USING CONFIGURE
-===============
+BUILD FROM SOURCE
+=================
-0) autoconf: If you get VM from the revision control, the `configure' script
- is not included. You have to run `autoconf' to create it. If you got VM
- from a public release, you should skip this step.
+VM source is availabe from https://gitlab.com/emacs-vm/vm
1) configure: First you need to decide the various options.
diff --git a/Makefile.in b/Makefile.in
index 987d02eb623..f85d73dc8b5 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -9,6 +9,7 @@ XARGS = @XARGS@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
PACKAGE_TARNAME = @PACKAGE_TARNAME@
+EMACS_PROG = @EMACS_PROG@
prefix = @prefix@
srcdir = @srcdir@
@@ -66,10 +67,58 @@ distclean:
-$(RM) -f Makefile vm-load.el config.status config.log
-$(RM) -rf autom4te.cache
-push:
- $(BZR) push
+##############################################################################
+# linting
+#
+PACKAGE_INIT = --eval "(progn (require 'package) (package-initialize))"
+
+# byte compile check
+byte-compile-lint:
+ rm -f list/*.elc
+ $(EMACS_PROG) -batch -Q -L lisp \
+ --eval '(setq byte-compile-error-on-warn t)' \
+ -f batch-byte-compile lisp/*.el
+
+# native compile check
+native-compile-lint:
+ rm -rf eln.tmp
+ @mkdir -p eln.tmp
+ $(EMACS_PROG) -batch -Q -L lisp \
+ --eval '(setq native-comp-async-report-warnings-errors nil)' \
+ --eval '(setq byte-compile-error-on-warn nil)' \
+ --eval '(dolist (f (directory-files "lisp" t "\\.el$$")) (let ((out
(concat "eln.tmp/" (file-name-nondirectory f) ".eln"))) (message "Native
compiling %s..." f) (native-compile f out)))'
+ rm -rf eln.tmp
+
+# check with build-in elint
+elint-lint:
+ $(EMACS_PROG) -batch -Q -l `pwd`/lisp \
+ --eval '(mapc (lambda (f) (message "Checking %s" f) (elint-file f))
\
+ (directory-files "lisp" t "\\.el$$"))'
+
+# check package file with external package-lint
+package-lint:
+ $(EMACS_PROG) -batch -L lisp $(PACKAGE_INIT) \
+ --eval "(require 'package-lint)" \
+ -f package-lint-batch-and-exit lisp/vm.el
+
+# check reqular expressions with external relint
+relint-lint:
+ $(EMACS_PROG) -batch -L lisp $(PACKAGE_INIT) \
+ --eval "(require 'relint)" \
+ -f relint-batch lisp/*.el
+
+
+# check with external elisp-lint
+ELINT_CONFIG = --eval '(setq-default fill-column 80)'
+elisp-lint:
+ $(EMACS_PROG) -batch -L `pwd`/lisp $(PACKAGE_INIT) $(ELINT_CONFIG) \
+ --eval "(require 'elisp-lint)" \
+ -f elisp-lint-files-batch `pwd`/lisp/*.el
+
+.PHONY: byte-compile-lint native-compile-lint elint package-lint relint-lint
elisp-lint
##############################################################################
+# xemacs package (not tested)
PKGDIR = $(shell pwd)/,,package/
PKGINFO = $(PKGDIR)/lisp/vm/_pkg.el
xemacs-package:
@@ -79,9 +128,9 @@ xemacs-package:
exit 1; \
fi
-$(RM) -rf ,,package
- cd lisp && $(make) PACKAGEDIR=$(PKGDIR)/lisp/vm install-pkg
- cd info && $(make) infodir=$(PKGDIR)/info install-pkg
- cd src && $(make) infodir=$(PKGDIR)/bin install-pkg
+ cd lisp && $(MAKE) PACKAGEDIR=$(PKGDIR)/lisp/vm install-pkg
+ cd info && $(MAKE) infodir=$(PKGDIR)/info install-pkg
+ cd src && $(MAKE) infodir=$(PKGDIR)/bin install-pkg
echo ";;;###autoload" > $(PKGINFO)
echo "(package-provide 'vm'" > $(PKGINFO)
echo " :version $(PACKAGE_VERSION)" >> $(PKGINFO)
@@ -93,12 +142,6 @@ xemacs-package:
cd ,,package; $(TAR) -cvzf ../vm-pkg.tar.gz *
##############################################################################
-release::
- ./release.sh
-
-snapshot::
- ./release.sh snapshot
-
tags::
etags lisp/*.el contrib/*.el info/*.texinfo NEWS example.vm INSTALL
Makefile.in lisp/Makefile.in info/Makefile.in src/Makefile.in
pixmaps/Makefile.in
diff --git a/NEWS b/NEWS
index 8bd21f72549..a7ee3afddd2 100644
--- a/NEWS
+++ b/NEWS
@@ -22,7 +22,8 @@ Status
Bug reports (email): [email protected]
(Please use `M-x vm-submit-bug-report' within VM)
-VM 8.3.0 <in progress>
+VM 8.3.0 (pending)
+
CHANGES
* VM development convert from bzr to git and moved to GitLab.
* Merged multiple pending changes.
@@ -31,6 +32,7 @@ VM 8.3.0 <in progress>
* Remove outdated copy of vcard support in favor of standard package, which
must
me install for vcard functionality to work
* Enable vm-mail-check-recipient-format by default
+ * Multiple bug fixes
VM 8.2.0b1
diff --git a/README.md b/README.md
index 4838317602d..f175bd893f0 100644
--- a/README.md
+++ b/README.md
@@ -9,17 +9,26 @@ mailer. It has a powerful virtual folder facility to
facilitate
searching as well as more advanced handling of multiple mail folders.
This site exists to continue VM development community project.
+VM is available from
+ <https://gitlab.com/emacs-vm/vm>
+
## Version Information
The VM versions 8.3.0 and up are designed to work with:
-- Gnu Emacs versions 28. or higher
+- Gnu Emacs versions 28.1 or higher
- XEmacs version (not currently tested with XEmacs)
## Installation
-Read [INSTALL](INSTALL) and follow the instructions to compile and
-setup VM.
+VM releases are avaliable through a non-gnu ELPA package:
+
+```
+ M-x package-install <ret> vm <ret>
+```
+
+If you wish to build from source, see [INSTALL](INSTALL)
+for instructions.
If you are new to VM, see example.vm for example configuration
settings (to be put into a `~/.vm` file). Read more in the VM manual
@@ -28,7 +37,7 @@ in _info_ format.
## Bugs
The preferred way to report bugs is to file issues at
-https://gitlab.com/emacs-vm/vm/-/issues.
+ <https://gitlab.com/emacs-vm/vm/-/issues>
Alternatively, bugs can be reported report in VM using the VM function.
diff --git a/configure.ac b/configure.ac
index e26f37a19cf..43b06c325cd 100644
--- a/configure.ac
+++ b/configure.ac
@@ -237,7 +237,7 @@ TEST
])
##############################################################################
-AC_INIT([VM],[8.3.x],[[email protected]])
+AC_INIT([VM],[8.3.0snapshot],[[email protected]])
# Name of the application
# Version (release) number
# Contact address
diff --git a/dev/docs/dev-guide.org b/dev/docs/dev-guide.org
new file mode 100644
index 00000000000..abde2dcce8d
--- /dev/null
+++ b/dev/docs/dev-guide.org
@@ -0,0 +1,22 @@
+
+* code linting
+** byte and native compile check
+make byte-compile-lint
+make native-compile-lint
+
+** package-lint of vm.el (external package-lint)
+make package-lint
+
+** regular expresion lint (external relint)
+make relint-lint
+
+** elint
+make elint-lint
+*** This is current very broken:
+gets Lisp nesting exceeds `max-lisp-eval-depth': 1601
+
+
+** elisp-lint (external package elisp-lint)
+make elisp-lint
+*** lots of errors, many false positives.
+
diff --git a/dev/docs/releasing.org b/dev/docs/releasing.org
index efd046c1eb9..e0369be3de5 100644
--- a/dev/docs/releasing.org
+++ b/dev/docs/releasing.org
@@ -1,11 +1,53 @@
Releasing VM
-* pre-release testing:
-(package-vc-install '("https://gitlab.com/USER/REPO.git" :rev "v1.2.3"))
+* use package-lint to check vm.el packages
+requires package-lint
+ make package-lint
+or
+ M-x package-lint-current-buffer
+note lint will not be clean, due to xemacs references
+* release is built initial in fork
+then merge to make official
+* version update in these files:
+- Add note release to info/vm.texinfo @item Version ..
+- NEWS
+- version in configure.ac AC_INIT
+- lisp/vm.el Version:
+
+* test build
+- make distclean
+- autoconf
+- configure
+- make
-* post-release testing
-(package-vc-install '("https://gitlab.com/USER/REPO.git" :rev "v1.2.3"))
+* pre-release testing from repo:
+(package-vc-install
+ '(vm :url "file:////Users/markd/projs/emacs/vm/vm-markd"
+ :lisp-dir "lisp"))
+
+
+* commit and tag
+- tag is in the form '3.0.0'
+- a branch are only made if changes are needed relative to a tag
+
+
+* pre-release testing from fork:
+(package-vc-install
+ '(vm :url"https://gitlab.com/USER/vm.git"
+ :lisp-dir "lisp"
+ :branch "3.0.0"))
+
+* post-release testing from main repo:
+(package-vc-install
+ '(vm :url"https://gitlab.com/emacs-vm/vm.git"
+ :lisp-dir "lisp"
+ :branch "3.0.0"))
+
+* push and test install once available in nongnu ELPA
+
+* update version to a snapshot of the next patch
+e.g. 3.0.0 -> 3.0.1snapshot
diff --git a/info/vm.texinfo b/info/vm.texinfo
index 7ebae96e4c1..2b257927e1f 100644
--- a/info/vm.texinfo
+++ b/info/vm.texinfo
@@ -7215,6 +7215,7 @@ Please let us know if any contributors have been missed
out.
@item Version 8.1.1, released 25 April, 2010.
@item Version 8.1.2, released 5 March, 2012.
@item Version 8.2.0, planned for release in March, 2013.
+@item Version 8.3.0snapshot, coming soon
@end itemize
diff --git a/lisp/vm.el b/lisp/vm.el
index db9c5fc452e..0bd0b6232e3 100644
--- a/lisp/vm.el
+++ b/lisp/vm.el
@@ -1,4 +1,4 @@
-;;; vm.el --- Entry points for VM -*- lexical-binding: t; -*-
+;;; vm.el --- VM mail reader -*- lexical-binding: t; -*-
;;
;; This file is part of VM
;;
@@ -9,7 +9,8 @@
;; Version: 8.3.0snapshot
;; Maintainer: [email protected]
;; URL: https://gitlab.com/emacs-vm/vm
-;; Package-Requires: ((emacs "28.0") (vcard "0.2.2"))
+;; Package-Requires: ((emacs "28.1") (vcard "0.2.2"))
+;; Keywords: mail
;;
;; This program is free software; you can redistribute it and/or modify
;; it under the terms of the GNU General Public License as published by
@@ -25,10 +26,13 @@
;; with this program; if not, write to the Free Software Foundation, Inc.,
;; 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
-;;; History:
-;;
-;; This file was vm-startup.el!
+;;; Commentary:
+;; VM mail reader for Emacs
+;; It is designed ot be highly configurable and easy to use. It supports POP
+;; and IMAP mail servers, understands MIME, and handles mail folders in the
+;; standard UNIX mailbox format and the BABYL format used by the RMAIL
+;; mailer. It has a powerful virtual folder facility to facilitate searching
+;; as well as more advanced handling of multiple mail folders.
;;; Code:
@@ -58,7 +62,8 @@
(eval-when-compile (require 'cl-lib))
(require 'package)
-(defconst vm-min-emacs-version "28.0"
+;; keep vm-min-emacs-version in sync with above Package-Requires
+(defconst vm-min-emacs-version "28.1"
"Minimum Emacs version supported by VM.")
(defvar enable-multibyte-characters)
@@ -78,7 +83,7 @@
;; vm-xemacs.el is a non-existent file to fool the Emacs 23 compiler
(declare-function get-coding-system "vm-xemacs.el" (name))
-(declare-function find-face "vm-xemacs.el" (face-or-name))
+(declare-function facep "vm-xemacs.el" (face-or-name))
(declare-function vm-rfaddons-infect-vm "vm-rfaddons.el"
(&optional sit-for option-list exclude-option-list))
@@ -1716,9 +1721,8 @@ draft messages."
(defun vm--commit-from-package (pkg)
"Get commit hash from PKG, whether VC-installed or archive-installed."
(let ((desc (package-get-descriptor pkg)))
- (or (when (package-vc-p desc)
- (package-vc-commit desc))
- (alist-get :commit (package-desc-extras desc)))))
+ (or (alist-get :commit (package-desc-extras desc))
+ "unknown-commit")))
(defun vm--version-info-from-package ()
"Return version and commit if VM is loaded from a package."