;;; org-fixup.el - to make life easier for folks without GNU make ;; ;; Author: Achim Gratz ;; Keywords: outlines, hypermedia, calendar, wp ;; Homepage: http://orgmode.org ;; ;; This file is not part of GNU Emacs. ;; ;; GNU Emacs 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 Emacs 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 Emacs; see the file COPYING. If not, write to the ;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, ;; Boston, MA 02110-1301, USA. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; ;;; Commentary: (load "autoload" nil 'nomessage) (load "org-compat.el" nil 'nomessage 'nosuffix) (defun org-make-org-version (org-release org-git-version odt-dir) (with-temp-buffer (insert "\ ;;; org-version.el --- autogenerated file, do not edit ;; ;;; Code: ;;;\#\#\#autoload \(defun org-release () \"The release version of org-mode. Inserted by installing org-mode or when a release is made.\" (let ((org-release \"" org-release "\")) org-release)) ;;;\#\#\#autoload \(defun org-git-version () \"The Git version of org-mode. Inserted by installing org-mode or when a release is made.\" (let ((org-git-version \"" org-git-version "\")) org-git-version)) ;;;\#\#\#autoload \(defconst org-odt-data-dir \"" odt-dir "\" \"The location of ODT styles.\") \f\n;; Local Variables:\n;; version-control: never ;; no-byte-compile: t ;; coding: utf-8\n;; End:\n;;; org-version.el ends here\n") (toggle-read-only 0) (write-file "org-version.el"))) (defun org-make-org-install () (with-temp-buffer (set-visited-file-name "org-install.el") (insert ";;; org-install.el --- autogenerated file, do not edit\n;;\n;;; Code:\n") (let ((files (directory-files default-directory nil "^\\(org\\|ob\\)\\(-.*\\)?\\.el$"))) (mapc (lambda (f) (generate-file-autoloads f)) files)) (insert "\f\n(provide 'org-install)\n") (insert "\f\n;; Local Variables:\n;; version-control: never\n") (insert ";; no-byte-compile: t\n;; no-update-autoloads: t\n") (insert ";; coding: utf-8\n;; End:\n;;; org-install.el ends here\n") (toggle-read-only 0) (save-buffer))) (defun org-make-autoloads () (let* ((origin default-directory) (dirlisp (org-find-library-dir "org")) (dirorg (concat dirlisp "../" )) (dirodt (if (boundp 'org-odt-data-dir) org-odt-data-dir (concat dirorg "etc/")))) (unwind-protect (progn (cd dirlisp) (org-fixup) (org-make-org-version (org-release) (org-git-version) dirodt) (org-make-org-install)) (cd origin)))) (defun org-make-autoloads-compile (&rest force) (let* ((origin default-directory) (dirlisp (org-find-library-dir "org"))) (unwind-protect (progn (cd dirlisp) (org-make-autoloads) (byte-recompile-directory dirlisp 0 force)) (cd origin)))) (defun org-make-local-mk () (let ((default "default.mk") (local "local.mk")) (unwind-protect (with-temp-buffer (insert-file-contents default) (goto-char (point-min)) (when (search-forward "-8<-" nil t) (forward-line 1) (delete-region (point-min) (point))) (when (search-forward "->8-" nil t) (forward-line 0) (delete-region (point) (point-max))) (goto-char (point-min)) (insert " # Remove \"oldorg:\" to switch to \"all\" as the default target. # Change \"oldorg:\" to an existing target to make that target the default, # or define your own target here to become the default target. oldorg: # do what the old Makfile did by default ##---------------------------------------------------------------------- ") (goto-char (point-max)) (insert "\ # See default.mk for further configuration options. ") (toggle-read-only 0) (write-file local)) nil))) (defun org-make-letterformat (a4name lettername) (unwind-protect (with-temp-buffer (insert-file-contents a4name) (goto-char (point-min)) (while (search-forward "\\pdflayout=(0l)" nil t) (replace-match "\\pdflayout=(1l)" nil t)) (toggle-read-only 0) (write-file lettername)) nil)) (defmacro org-fixup () (let* ((origin default-directory) (dirlisp (org-find-library-dir "org")) (dirorg (concat dirlisp "../" )) (dirgit (concat dirorg ".git/" )) (org-version "N/A-fixup") (org-git-version "N/A-fixup !!check installation!!")) (if (and (boundp 'org-fake-release) (stringp org-fake-release) (boundp 'org-fake-git-version) (stringp org-fake-git-version)) (setq org-version org-fake-release org-git-version org-fake-git-version) (if (load (concat dirlisp "org-version.el") 'noerror 'nomessage 'nosuffix) (setq org-version (org-release) org-git-version (org-git-version)) (when (and (file-exists-p dirgit) (executable-find "git")) (unwind-protect (progn (cd dirorg) (let ((git6 (substring (shell-command-to-string "git describe --abbrev=6 HEAD") 0 -1)) (git0 (substring (shell-command-to-string "git describe --abbrev=0 HEAD") 0 -1)) (gitd (string-match "\\S-" (shell-command-to-string "git status -uno --porcelain")))) (setq org-git-version (concat git6 (when gitd ".dirty"))) (if (string-match "^release_" git0) (setq org-version (substring git0 8)) (setq org-version git0)))) (cd origin))))) `(progn (defun org-release () ,org-version) (defun org-git-version () ,org-git-version) "org-fixup.el: redefined org version."))) (provide 'org-fixup) ;; Local Variables: ;; no-byte-compile: t ;; coding: utf-8 ;; End: ;;; org-fixup.el ends here