emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
From: Achim Gratz <Stromeko@nexgo.de>
To: emacs-orgmode@gnu.org
Subject: Re: Compatibility tests
Date: Sun, 06 Jan 2013 18:40:50 +0100	[thread overview]
Message-ID: <87obh2ciql.fsf@Rainer.invalid> (raw)
In-Reply-To: 87ehhyyfdf.fsf@bzg.ath.cx

[-- Attachment #1: Type: text/plain, Size: 194 bytes --]

Bastien writes:
> As for XEmacs and Emacs 22, I'm fine with anything that
> helps supporting these emacsen, unless it adds too much
> extra complexity. 

First three patchs apply against maint:

[-- Attachment #2: 0001-Compatibility-Use-org-no-warnings.patch --]
[-- Type: text/x-patch, Size: 1109 bytes --]

From 4e2f6d7d8f870f834079ce010eb2049d61bb5576 Mon Sep 17 00:00:00 2001
From: Achim Gratz <Stromeko@Stromeko.DE>
Date: Sun, 6 Jan 2013 18:28:06 +0100
Subject: [PATCH 1/3] Compatibility: Use org-no-warnings
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

* contrib/lisp/org-e-odt.el (org-e-odt-htmlfontify-string): Use
  compatibility alias `org-no-warnings´.
---
 contrib/lisp/org-e-odt.el | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/contrib/lisp/org-e-odt.el b/contrib/lisp/org-e-odt.el
index 346b029..5953cc6 100644
--- a/contrib/lisp/org-e-odt.el
+++ b/contrib/lisp/org-e-odt.el
@@ -2886,7 +2886,7 @@ (defun org-e-odt-htmlfontify-string (line)
 	  (lambda (style text-block text-id text-begins-block-p)
 	    (insert (format "<text:span text:style-name=\"%s\">" style))))
 	 (hfy-end-span-handler (lambda nil (insert "</text:span>"))))
-    (with-no-warnings (htmlfontify-string line))))
+    (org-no-warnings (htmlfontify-string line))))
 
 (defun org-e-odt-do-format-code
   (code &optional lang refs retain-labels num-start)
-- 
1.8.1


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #3: 0002-Compatibility-Define-face-alias-mode-line-for-XEmacs.patch --]
[-- Type: text/x-patch, Size: 845 bytes --]

From d524e7d6112cda2b53e3e0822609fa81b2dd6ee9 Mon Sep 17 00:00:00 2001
From: Achim Gratz <Stromeko@Stromeko.DE>
Date: Sun, 6 Jan 2013 17:48:39 +0100
Subject: [PATCH 2/3] Compatibility: Define face alias mode-line for XEmacs

* lisp/org-faces.el: Define face alias mode-line for XEmacs (it's
  called modeline there).
---
 lisp/org-faces.el | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/lisp/org-faces.el b/lisp/org-faces.el
index 80e8134..606db08 100644
--- a/lisp/org-faces.el
+++ b/lisp/org-faces.el
@@ -44,6 +44,9 @@ (defun org-copy-face (old-face new-face docstring &rest attributes)
 	  (set-face-doc-string new-face docstring)))))
 (put 'org-copy-face 'lisp-indent-function 2)
 
+(when (featurep 'xemacs)
+  (put 'mode-line 'face-alias 'modeline))
+
 (defgroup org-faces nil
   "Faces in Org-mode."
   :tag "Org Faces"
-- 
1.8.1


[-- Attachment #4: 0003-Compatibility-Use-org-define-obsolete-function-varia.patch --]
[-- Type: text/x-patch, Size: 7810 bytes --]

From 305f29776fba57cdd1566071e0e8a75270d095c6 Mon Sep 17 00:00:00 2001
From: Achim Gratz <Stromeko@Stromeko.DE>
Date: Sun, 6 Jan 2013 18:29:05 +0100
Subject: [PATCH 3/3] Compatibility: Use
 org-define-obsolete-{function,variable}-alias
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

* lisp/org-compat.el (org-define-obsolete-function-alias,
  org-define-obsolete-variable-alias): Introduce new compatibility
  macros to obsolete functions and variables.

* lisp/org-agenda.el, lisp/org-clock.el, lisp/org-id.el,
  lisp/org-lparse.el, lisp/org-protocol.el lisp/org.el: Use
  `org-define-obsolete-{function,variable}-alias´instead of
  `define-obsolate{function,variable}-alias´.
---
 lisp/org-agenda.el   |  6 +++---
 lisp/org-clock.el    |  2 +-
 lisp/org-compat.el   | 18 ++++++++++++++++++
 lisp/org-id.el       |  2 +-
 lisp/org-lparse.el   |  4 ++--
 lisp/org-protocol.el |  6 +++---
 lisp/org.el          | 13 ++++---------
 7 files changed, 32 insertions(+), 19 deletions(-)

diff --git a/lisp/org-agenda.el b/lisp/org-agenda.el
index 1b2337c..b4c21fc 100644
--- a/lisp/org-agenda.el
+++ b/lisp/org-agenda.el
@@ -890,7 +890,7 @@ (defcustom org-agenda-menu-show-matcher t
   :version "24.1"
   :type 'boolean)
 
-(define-obsolete-variable-alias 'org-agenda-menu-two-column 'org-agenda-menu-two-columns "24.3")
+(org-define-obsolete-variable-alias 'org-agenda-menu-two-column 'org-agenda-menu-two-columns "24.3")
 
 (defcustom org-agenda-menu-two-columns nil
   "Non-nil means, use two columns to show custom commands in the dispatcher.
@@ -900,7 +900,7 @@ (defcustom org-agenda-menu-two-columns nil
   :version "24.1"
   :type 'boolean)
 
-(define-obsolete-variable-alias 'org-finalize-agenda-hook 'org-agenda-finalize-hook "24.3")
+(org-define-obsolete-variable-alias 'org-finalize-agenda-hook 'org-agenda-finalize-hook "24.3")
 (defcustom org-agenda-finalize-hook nil
   "Hook run just before displaying an agenda buffer.
 The buffer is still writable when the hook is called.
@@ -7681,7 +7681,7 @@ (defun org-agenda-set-mode-name ()
 		"")))
   (force-mode-line-update))
 
-(define-obsolete-function-alias
+(org-define-obsolete-function-alias
   'org-agenda-post-command-hook 'org-agenda-update-agenda-type "24.3")
 
 (defun org-agenda-update-agenda-type ()
diff --git a/lisp/org-clock.el b/lisp/org-clock.el
index a481ac5..e3048e5 100644
--- a/lisp/org-clock.el
+++ b/lisp/org-clock.el
@@ -204,7 +204,7 @@ (defcustom org-clock-sound nil
 	  (const :tag "Standard beep" t)
 	  (file :tag "Play sound file")))
 
-(define-obsolete-variable-alias 'org-clock-modeline-total
+(org-define-obsolete-variable-alias 'org-clock-modeline-total
   'org-clock-mode-line-total "24.3")
 
 (defcustom org-clock-mode-line-total 'auto
diff --git a/lisp/org-compat.el b/lisp/org-compat.el
index 8f21321..8150875 100644
--- a/lisp/org-compat.el
+++ b/lisp/org-compat.el
@@ -169,6 +169,24 @@ (defsubst org-decompose-region (beg end)
 	(set-buffer-modified-p modified-p))
     (decompose-region beg end)))
 
+(defmacro org-define-obsolete-function-alias (o-name c-name when &optional doc)
+  "Reconcile the two-argument form of
+`define-obsolete-function-alias' in XEmacs/Emacs 22 with the 3-4
+argument form in Emacs 23 and later."
+  (if (or (featurep 'xemacs)
+	  (< emacs-major-version 23))
+      `(define-obsolete-function-alias ,o-name ,c-name)
+    `(define-obsolete-function-alias ,o-name ,c-name ,when ,doc)))
+
+(defmacro org-define-obsolete-variable-alias (o-name c-name when &optional doc)
+  "Reconcile the two-argument form of
+`define-obsolete-variable-alias' in XEmacs/Emacs 22 with the 3-4
+argument form in Emacs 23 and later."
+  (if (or (featurep 'xemacs)
+	  (< emacs-major-version 23))
+      `(define-obsolete-variable-alias ,o-name ,c-name)
+    `(define-obsolete-variable-alias ,o-name ,c-name ,when ,doc)))
+
 ;; Miscellaneous functions
 
 (defun org-add-hook (hook function &optional append local)
diff --git a/lisp/org-id.el b/lisp/org-id.el
index 6e865b5..5d8e5b0 100644
--- a/lisp/org-id.el
+++ b/lisp/org-id.el
@@ -83,7 +83,7 @@ (defgroup org-id nil
   :tag "Org ID"
   :group 'org)
 
-(define-obsolete-variable-alias
+(org-define-obsolete-variable-alias
   'org-link-to-org-use-id 'org-id-link-to-org-use-id "24.3")
 (defcustom org-id-link-to-org-use-id nil
   "Non-nil means storing a link to an Org file will use entry IDs.
diff --git a/lisp/org-lparse.el b/lisp/org-lparse.el
index 1171135..e9fbbea 100644
--- a/lisp/org-lparse.el
+++ b/lisp/org-lparse.el
@@ -1718,7 +1718,7 @@ (defun org-lparse-end-list-item-1 (&optional type)
   (org-lparse-end-paragraph)
   (org-lparse-end-list-item (or type "u")))
 
-(define-obsolete-function-alias
+(org-define-obsolete-function-alias
   'org-lparse-preprocess-after-blockquote-hook
   'org-lparse-preprocess-after-blockquote
   "24.3")
@@ -1736,7 +1736,7 @@ (defun org-lparse-preprocess-after-blockquote ()
 	 (format "ORG-%s-END %s" (upcase (match-string 2))
 		 (match-string 3))) t t))))
 
-(define-obsolete-function-alias
+(org-define-obsolete-function-alias
   'org-lparse-strip-experimental-blocks-maybe-hook
   'org-lparse-strip-experimental-blocks-maybe
   "24.3")
diff --git a/lisp/org-protocol.el b/lisp/org-protocol.el
index 9eaf642..0925964 100644
--- a/lisp/org-protocol.el
+++ b/lisp/org-protocol.el
@@ -128,15 +128,15 @@
 		  (filename &optional up))
 (declare-function server-edit "server" (&optional arg))
 
-(define-obsolete-function-alias
+(org-define-obsolete-function-alias
   'org-protocol-unhex-compound 'org-link-unescape-compound
   "2011-02-17")
 
-(define-obsolete-function-alias
+(org-define-obsolete-function-alias
   'org-protocol-unhex-string 'org-link-unescape
   "2011-02-17")
 
-(define-obsolete-function-alias
+(org-define-obsolete-function-alias
   'org-protocol-unhex-single-byte-sequence
   'org-link-unescape-single-byte-sequence
   "2011-02-17")
diff --git a/lisp/org.el b/lisp/org.el
index 644b760..ea19f97 100644
--- a/lisp/org.el
+++ b/lisp/org.el
@@ -7402,12 +7402,7 @@ (defun org-get-valid-level (level &optional change)
 	    ((< change 0) (max 1 (1+ (* 2 (/ (+ level (* 2 change)) 2))))))
     (max 1 (+ level (or change 0)))))
 
-(if (boundp 'define-obsolete-function-alias)
-    (if (or (featurep 'xemacs) (< emacs-major-version 23))
-	(define-obsolete-function-alias 'org-get-legal-level
-	  'org-get-valid-level)
-      (define-obsolete-function-alias 'org-get-legal-level
-	'org-get-valid-level "23.1")))
+(org-define-obsolete-function-alias 'org-get-legal-level 'org-get-valid-level "23.1")
 
 (defvar org-called-with-limited-levels nil) ;; Dynamically bound in
 ;; ̀org-with-limited-levels'
@@ -17789,7 +17784,7 @@ (defun org-display-inline-images (&optional include-linked refresh beg end)
 			     (list 'org-display-inline-remove-overlay))
 		(push ov org-inline-image-overlays)))))))))
 
-(define-obsolete-function-alias
+(org-define-obsolete-function-alias
   'org-display-inline-modification-hook 'org-display-inline-remove-overlay "24.3")
 
 (defun org-display-inline-remove-overlay (ov after beg end &optional len)
@@ -18169,7 +18164,7 @@ (defvar org-self-insert-command-undo-counter 0)
 (defvar org-table-auto-blank-field) ; defined in org-table.el
 (defvar org-speed-command nil)
 
-(define-obsolete-function-alias
+(org-define-obsolete-function-alias
   'org-speed-command-default-hook 'org-speed-command-activate "24.3")
 
 (defun org-speed-command-activate (keys)
@@ -18182,7 +18177,7 @@ (defun org-speed-command-activate (keys)
     (cdr (assoc keys (append org-speed-commands-user
 			     org-speed-commands-default)))))
 
-(define-obsolete-function-alias
+(org-define-obsolete-function-alias
   'org-babel-speed-command-hook 'org-babel-speed-command-activate "24.3")
 
 (defun org-babel-speed-command-activate (keys)
-- 
1.8.1


[-- Attachment #5: Type: text/plain, Size: 52 bytes --]


Then merge into master and apply these two on top:

[-- Attachment #6: 0001-Compatibility-Use-org-define-obsolete-function-varia.patch --]
[-- Type: text/x-patch, Size: 1090 bytes --]

From 8fcdb5179bbe172b52dd80101efe247de9fe1ac2 Mon Sep 17 00:00:00 2001
From: Achim Gratz <Stromeko@Stromeko.DE>
Date: Sun, 6 Jan 2013 18:26:42 +0100
Subject: [PATCH 1/2] Compatibility: Use
 org-define-obsolete-{function,variable}-alias
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

* lisp/org.el: Use
  `org-define-obsolete-{function,variable}-alias´instead of
  `define-obsolate{function,variable}-alias´.
---
 lisp/org.el | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/lisp/org.el b/lisp/org.el
index 4ced7e2..28f075a 100644
--- a/lisp/org.el
+++ b/lisp/org.el
@@ -16142,7 +16142,8 @@ (defun org-fix-decoded-time (time)
   (let ((n 0))
     (mapcar (lambda (x) (if (< (setq n (1+ n)) 7) (or x 0) x)) time)))
 
-(define-obsolete-function-alias 'org-days-to-time 'org-time-stamp-to-now "24.3")
+(org-define-obsolete-function-alias
+  'org-days-to-time 'org-time-stamp-to-now "24.3")
 
 (defun org-time-stamp-to-now (timestamp-string &optional seconds)
   "Difference between TIMESTAMP-STRING and now in days.
-- 
1.8.1


[-- Attachment #7: 0002-Compatibility-Use-org-load-noerror-mustsuffix.patch --]
[-- Type: text/x-patch, Size: 4285 bytes --]

From 5484a33b8d1382958095922bc9bc2bd6f1d9ffc6 Mon Sep 17 00:00:00 2001
From: Achim Gratz <Stromeko@Stromeko.DE>
Date: Sun, 6 Jan 2013 18:24:56 +0100
Subject: [PATCH 2/2] Compatibility: Use org-load-noerror-mustsuffix
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

* lisp/org-macs.el: New macro to allow the 5-argument form of load to
  be used where possible without breaking compatibility with XEmacs.

* lisp/org.el (org-version, org-reload): Use
  `org-load-noerror-mustsuffix´ instead of adding a fifth argument to
  load directly.  Guard against undefined variable load-suffixes,
  which doesn't exist in XEmacs.

Since load-suffixes doesn't exist in XEmacs, (org-reload 'uncompiled)
will not work.  If it doesn't complicate the compatibility macro too
much this can be added later.
---
 lisp/org-macs.el |  6 ++++++
 lisp/org.el      | 20 +++++++++++---------
 2 files changed, 17 insertions(+), 9 deletions(-)

diff --git a/lisp/org-macs.el b/lisp/org-macs.el
index a44bdbe..e5d6100 100644
--- a/lisp/org-macs.el
+++ b/lisp/org-macs.el
@@ -426,6 +426,12 @@ (defun org-make-parameter-alist (flat)
     (cons (list (car flat) (cadr flat))
 	  (org-make-parameter-alist (cddr flat)))))
 
+(defmacro org-load-noerror-mustsuffix (file)
+  "Load FILE with optional arguments NOERROR and MUSTSUFFIX.  Drop the MUSTSUFFIX argument for XEmacs, which doesn't recognize it."
+  (if (featurep 'xemacs)
+      `(load ,file 'noerror)
+    `(load ,file 'noerror nil nil 'mustsuffix)))
+
 (provide 'org-macs)
 
 ;;; org-macs.el ends here
diff --git a/lisp/org.el b/lisp/org.el
index 28f075a..a446d76 100644
--- a/lisp/org.el
+++ b/lisp/org.el
@@ -78,8 +78,11 @@ (defvar org-table-formula-constants-local nil
 (require 'find-func)
 (require 'format-spec)
 
+(require 'org-macs)
+(require 'org-compat)
+
 (let ((load-suffixes (list ".el")))
-  (load "org-loaddefs" 'noerror nil nil 'mustsuffix))
+  (org-load-noerror-mustsuffix "org-loaddefs"))
 
 ;; `org-outline-regexp' ought to be a defconst but is let-binding in
 ;; some places -- e.g. see the macro org-with-limited-levels.
@@ -238,7 +241,6 @@ (defcustom org-clone-delete-id nil
   :group 'org-id)
 
 ;;; Version
-(require 'org-compat)
 (org-check-version)
 
 ;;;###autoload
@@ -249,13 +251,12 @@ (defun org-version (&optional here full message)
 When MESSAGE is non-nil, display a message with the version."
   (interactive "P")
   (let* ((org-dir         (ignore-errors (org-find-library-dir "org")))
-	 (save-load-suffixes load-suffixes)
+	 (save-load-suffixes (when (boundp 'load-suffixes) load-suffixes))
 	 (load-suffixes (list ".el"))
 	 (org-install-dir (ignore-errors (org-find-library-dir "org-loaddefs")))
 	 (org-trash       (or
 			   (and (fboundp 'org-release) (fboundp 'org-git-version))
-			   (load (concat org-dir "org-version")
-				 'noerror 'nomessage nil 'mustsuffix)))
+			   (org-load-noerror-mustsuffix (concat org-dir "org-version"))))
 	 (load-suffixes save-load-suffixes)
 	 (org-version (org-release))
 	 (git-version (org-git-version))
@@ -4973,7 +4974,7 @@ (defvar buffer-face-mode-face)
 (require 'easymenu)
 (require 'overlay)
 
-(require 'org-macs)
+;; (require 'org-macs) moved higher up in the file before it is first used
 (require 'org-entities)
 ;; (require 'org-compat) moved higher up in the file before it is first used
 (require 'org-faces)
@@ -20349,15 +20350,16 @@ (defun org-reload (&optional uncompiled)
 				   feats)))
 		  'string-lessp)
 		 (list "org-version" "org")))
+	 (load-suffixes (when (boundp 'load-suffixes) load-suffixes))
 	 (load-suffixes (if uncompiled (reverse load-suffixes) load-suffixes))
 	 load-uncore load-misses)
     (setq load-misses
 	  (delq 't
 		(mapcar (lambda (f)
-			  (or (load (concat org-dir f) 'noerror nil nil 'mustsuffix)
+			  (or (org-load-noerror-mustsuffix (concat org-dir f))
 			      (and (string= org-dir contrib-dir)
-				   (load (concat contrib-dir f) 'noerror nil nil 'mustsuffix))
-			      (and (load (concat (org-find-library-dir f) f) 'noerror nil nil 'mustsuffix)
+				   (org-load-noerror-mustsuffix (concat contrib-dir f)))
+			      (and (org-load-noerror-mustsuffix (concat (org-find-library-dir f) f))
 				   (add-to-list 'load-uncore f 'append)
 				   't)
 			      f))
-- 
1.8.1


[-- Attachment #8: Type: text/plain, Size: 191 bytes --]



Regards,
Achim.
-- 
+<[Q+ Matrix-12 WAVE#46+305 Neuron microQkb Andromeda XTk Blofeld]>+

Wavetables for the Waldorf Blofeld:
http://Synth.Stromeko.net/Downloads.html#BlofeldUserWavetables

  parent reply	other threads:[~2013-01-06 17:41 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-01-05 20:15 Compatibility tests Achim Gratz
2013-01-06  6:50 ` Bastien
2013-01-06  7:10   ` Achim Gratz
2013-01-06  7:17     ` Bastien
2013-01-06 17:40   ` Achim Gratz [this message]
2013-01-06 20:21     ` Bastien
2013-01-06 20:45       ` Achim Gratz
2013-01-06 22:08         ` Bastien

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.orgmode.org/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87obh2ciql.fsf@Rainer.invalid \
    --to=stromeko@nexgo.de \
    --cc=emacs-orgmode@gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).