From mboxrd@z Thu Jan 1 00:00:00 1970 From: David Beswick Subject: Bug: org-element-fixed-width-interpreter fails when given an empty string [8.0.1 (release_8.0.1-40-g38051c @ /home/david/git/home-common/emacs/foreign/org-mode/lisp/)] Date: Thu, 25 Apr 2013 16:30:40 +1000 Message-ID: Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Return-path: Received: from eggs.gnu.org ([208.118.235.92]:52380) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UVFpZ-0007YE-Cx for emacs-orgmode@gnu.org; Thu, 25 Apr 2013 02:39:03 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1UVFpR-0006j9-PT for emacs-orgmode@gnu.org; Thu, 25 Apr 2013 02:38:57 -0400 Received: from mail-pa0-f47.google.com ([209.85.220.47]:60833) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UVFpR-0006iw-JU for emacs-orgmode@gnu.org; Thu, 25 Apr 2013 02:38:49 -0400 Received: by mail-pa0-f47.google.com with SMTP id bj1so1676347pad.20 for ; Wed, 24 Apr 2013 23:38:48 -0700 (PDT) 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: emacs-orgmode@gnu.org Hi, I encountered this problem when trying out org-sync with Redmine. That package uses org-element to create "fixed-width" type elements to contain the bug descriptions. When a bug had no description, this problem would occur. In that case, org-element-property returns the empty string for the ":value" property of the fixed-width element, and the call to "substring" fails. I also encountered the problem with org version [7.9.2 (release_7.9.2-1-ge003bd @ /home/david/git/home-common/emacs/foreign/org-mode/lisp/)] As far as I can see, org-element.el head still has the problem. Here's a patch for the issue. diff --git a/lisp/org-element.el b/lisp/org-element.el index 73d0b46..bfc35a7 100644 --- a/lisp/org-element.el +++ b/lisp/org-element.el @@ -1834,8 +1834,11 @@ Assume point is at the beginning of the fixed-width area. (defun org-element-fixed-width-interpreter (fixed-width contents) "Interpret FIXED-WIDTH element as Org syntax. CONTENTS is nil." - (replace-regexp-in-string - "^" ": " (substring (org-element-property :value fixed-width) 0 -1))) + (let ((value (org-element-property :value fixed-width))) + (if (not (= (length value) 0)) + (replace-regexp-in-string + "^" ": " (substring value 0 -1)) + ": "))) ;;;; Horizontal Rule Emacs : GNU Emacs 23.4.1 (x86_64-pc-linux-gnu, GTK+ Version 2.24.12) of 2012-09-23 on allspice, modified by Debian Package: Org-mode version 8.0.1 (release_8.0.1-40-g38051c @ /home/david/git/home-common/emacs/foreign/org-mode/lisp/) current state: ============== (setq org-agenda-clockreport-parameter-plist '(:link nil :maxlevel 3) org-speed-command-hook '(org-speed-command-default-hook org-babel-speed-command-hook) org-metaup-hook '(org-babel-load-in-session-maybe) org-after-todo-state-change-hook '(org-clock-out-if-current) org-clock-heading-function '(lambda nil (concat (buffer-name) " " (org-clock-heading-function-default))) org-after-todo-statistics-hook '(org-summary-todo) org-tab-first-hook '(org-hide-block-toggle-maybe org-src-native-tab-command-maybe org-babel-hide-result-toggle-maybe org-babel-header-arg-expand) org-src-mode-hook '(org-src-babel-configure-edit-buffer org-src-mode-configure-edit-buffer) org-confirm-shell-link-function 'yes-or-no-p org-agenda-before-write-hook '(org-agenda-add-entry-text) org-babel-pre-tangle-hook '(save-buffer) org-cycle-hook '(org-cycle-hide-archived-subtrees org-cycle-hide-drawers org-cycle-hide-inline-tasks org-cycle-show-empty-lines org-optimize-window-after-visibility-change) org-mode-hook '((lambda nil (local-unset-key (kbd "")) (org-indent-mode 1) (visual-line-mode 1)) #[nil "\300\301\302\303\304$\207" [org-add-hook change-major-mode-hook org-show-block-all append local] 5] #[nil "\300\301\302\303\304$\207" [org-add-hook change-major-mode-hook org-babel-show-result-all append local] 5] org-babel-result-hide-spec org-babel-hide-all-hashes) org-ctrl-c-ctrl-c-hook '(org-babel-hash-at-point org-babel-execute-safely-maybe) org-confirm-elisp-link-function 'yes-or-no-p org-clock-out-hook '(org-clock-remove-empty-clock-drawer) org-occur-hook '(org-first-headline-recenter) org-from-is-user-regexp "\\" org-clock-report-include-clocking-task t org-metadown-hook '(org-babel-pop-to-session-maybe) )