From mboxrd@z Thu Jan 1 00:00:00 1970 From: Bastien Subject: Re: Current patches to make org-mode run on XEmacs Date: Fri, 21 Oct 2011 20:36:21 +0200 Message-ID: <87lisekx96.fsf@gnu.org> References: Mime-Version: 1.0 Content-Type: text/plain Return-path: Received: from eggs.gnu.org ([140.186.70.92]:38565) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RHJwL-0003wr-Nw for emacs-orgmode@gnu.org; Fri, 21 Oct 2011 14:35:35 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1RHJwJ-0002LS-QZ for emacs-orgmode@gnu.org; Fri, 21 Oct 2011 14:35:33 -0400 Received: from mail-ey0-f169.google.com ([209.85.215.169]:33558) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RHJwJ-0002LM-I6 for emacs-orgmode@gnu.org; Fri, 21 Oct 2011 14:35:31 -0400 Received: by eye4 with SMTP id 4so4815480eye.0 for ; Fri, 21 Oct 2011 11:35:30 -0700 (PDT) In-Reply-To: (Michael Sperber's message of "Wed, 31 Aug 2011 20:12:06 +0200") List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org Sender: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org To: Michael Sperber Cc: emacs-orgmode@gnu.org Hi Michael, thanks for these patches. Next time, could you provide one patch per mail? The patchwork server cannot handle multiple patches and it makes it easier to discuss every patch -- thanks! Some comments below. Michael Sperber writes: > ... are attached. I've run with this for a few weeks now, and what I > use mostly works. So I would appreciate if these could go into the git > repo. > > Let me draw your attention to this hunk: > > --- a/lisp/org.el > +++ b/lisp/org.el > @@ -7360,7 +7360,7 @@ would end up with no indentation after the change, nothing at all is done." > col) > (while (re-search-forward > (concat "\\(" (regexp-opt org-all-time-keywords) > - "\\|" "^[ \t]*" org-tsr-regexp-both "*$" > + "\\|" "^[ \t]*" org-tsr-regexp-both "$" > "\\|" "^[ \t]*:[a-zA-Z][a-zA-Z0-9_]*:.*$" > "\\)") (or drawer-end end) t) > (beginning-of-line) > > While I needed this to make the code run on XEmacs, it really looks like > a bug fix to me: The "*" that I deleted makes that part of the > disjunction match the empty string, and that makes > `org-fixup-indentation' loop infinitely. Not sure I understand this fix: can you explain what is the problem with XEmacs (without considering the problem with Emacs)? > --- a/lisp/ob-calc.el > +++ b/lisp/ob-calc.el > @@ -28,8 +28,9 @@ > ;;; Code: > (require 'ob) > (require 'calc) > -(require 'calc-store) > -(unless (featurep 'xemacs) (require 'calc-trail)) > +(unless (featurep 'xemacs) > + (require 'calc-trail) > + (require 'calc-store)) > (eval-when-compile (require 'ob-comint)) > > (defvar org-babel-default-header-args:calc nil Applied, thanks. > diff --git a/lisp/org-agenda.el b/lisp/org-agenda.el > index b1fa5f5..7e4da31 100644 > --- a/lisp/org-agenda.el > +++ b/lisp/org-agenda.el > @@ -4306,8 +4306,8 @@ of what a project is and how to check if it stuck, customize the variable > "\\)\\>")) > (tags (nth 2 org-stuck-projects)) > (tags-re (if (member "*" tags) > - (org-re (concat org-outline-regexp-bol > - ".*:[[:alnum:]_@#%]+:[ \t]*$")) > + (concat org-outline-regexp-bol > + (org-ref ".*:[[:alnum:]_@#%]+:[ \t]*$")) > (if tags > (concat org-outline-regexp-bol > ".*:\\(" > diff --git a/lisp/org-compat.el b/lisp/org-compat.el I don't understand why (org-re (contact "..." "...")) does not produce the same result than (contact (org-re "..." "...")) in XEmacs. Can you explain me? > index 3e9c202..d093700 100644 > --- a/lisp/org-compat.el > +++ b/lisp/org-compat.el > @@ -251,8 +251,11 @@ Works on both Emacs and XEmacs." > (defun org-activate-mark () > (when (mark t) > (setq mark-active t) > - (unless transient-mark-mode > - (setq transient-mark-mode 'lambda))))) > + (when (and (boundp 'transient-mark-mode) > + (not transient-mark-mode)) > + (setq transient-mark-mode 'lambda)) > + (when (boundp 'zmacs-regions) > + (setq zmacs-regions t))))) > > ;; Invisibility compatibility > Applied, thanks. > diff --git a/lisp/org-exp.el b/lisp/org-exp.el > index f795fbd..43752ca 100644 > --- a/lisp/org-exp.el > +++ b/lisp/org-exp.el > @@ -1028,7 +1028,8 @@ Pressing `1' will switch between these two options." > (setq r1 (read-char-exclusive))) > (error "No enclosing node with LaTeX_CLASS or EXPORT_TITLE or EXPORT_FILE_NAME") > ))))) > - (redisplay) > + (if (fboundp 'redisplay) > + (redisplay)) > (and bpos (goto-char bpos)) > (setq r2 (if (< r1 27) (+ r1 96) r1)) > (unless (setq ass (assq r2 cmds)) Applied, thanks. > diff --git a/lisp/org-footnote.el b/lisp/org-footnote.el > index 04389ef..a3bd9bf 100644 > --- a/lisp/org-footnote.el > +++ b/lisp/org-footnote.el > @@ -70,13 +70,13 @@ > ;; their definition. > ;; > ;; `org-re' is used for regexp compatibility with XEmacs. > - (org-re (concat "\\[\\(?:" > - ;; Match inline footnotes. > - "fn:\\([-_[:word:]]+\\)?:\\|" > - ;; Match other footnotes. > - "\\(?:\\([0-9]+\\)\\]\\)\\|" > - "\\(fn:[-_[:word:]]+\\)" > - "\\)")) > + (concat (org-re "\\[\\(?:") > + ;; Match inline footnotes. > + (org-re "fn:\\([-_[:word:]]+\\)?:\\|") > + ;; Match other footnotes. > + (org-re "\\(?:\\([0-9]+\\)\\]\\)\\|") > + (org-re "\\(fn:[-_[:word:]]+\\)") > + (org-re "\\)")) > "Regular expression for matching footnotes.") > > (defconst org-footnote-definition-re > @@ -265,10 +265,9 @@ label, start, end and definition of the footnote otherwise." > (re-search-backward > message-signature-separator nil t))))) > (or (and (re-search-forward > - (org-re > - (concat org-outline-regexp-bol "\\|" > - org-footnote-definition-re "\\|" > - "^[ \t]*$")) > + (concat org-outline-regexp-bol "\\|" > + org-footnote-definition-re "\\|" > + "^[ \t]*$") > bound 'move) > (progn (skip-chars-forward " \t\n") (point-at-bol))) > (point)))) See my question above. > diff --git a/lisp/org.el b/lisp/org.el > index d63b854..e77b4af 100644 > --- a/lisp/org.el > +++ b/lisp/org.el > @@ -7360,7 +7360,7 @@ would end up with no indentation after the change, nothing at all is done." > col) > (while (re-search-forward > (concat "\\(" (regexp-opt org-all-time-keywords) > - "\\|" "^[ \t]*" org-tsr-regexp-both "*$" > + "\\|" "^[ \t]*" org-tsr-regexp-both "$" > "\\|" "^[ \t]*:[a-zA-Z][a-zA-Z0-9_]*:.*$" > "\\)") (or drawer-end end) t) > (beginning-of-line) See my other question above. > @@ -19662,10 +19662,11 @@ the functionality can be provided as a fall-back.") > ;; through to `fill-paragraph' when appropriate. > (org-set-local 'fill-paragraph-function 'org-fill-paragraph) > ;; Prevent auto-fill from inserting unwanted new items. > - (org-set-local 'fill-nobreak-predicate > - (if (memq 'org-fill-item-nobreak-p fill-nobreak-predicate) > - fill-nobreak-predicate > - (cons 'org-fill-item-nobreak-p fill-nobreak-predicate))) > + (if (boundp 'fill-nobreak-predicate) > + (org-set-local 'fill-nobreak-predicate > + (if (memq 'org-fill-item-nobreak-p fill-nobreak-predicate) > + fill-nobreak-predicate > + (cons 'org-fill-item-nobreak-p fill-nobreak-predicate)))) > ;; Adaptive filling: To get full control, first make sure that > ;; `adaptive-fill-regexp' never matches. Then install our own matcher. > (unless (local-variable-p 'adaptive-fill-regexp (current-buffer)) Applied thanks. Hope this makes Org usable under XEmacs again. Thanks a lot for taking care of this! Best, -- Bastien