Commit Graph

34 Commits

Author SHA1 Message Date
Ihor Radchenko 41b7410a8c
doc/Makefile: Limit memory consumption when generating docs
* doc/Makefile: Do not disable garbage collection completely (as it
was after 3684c7967) when generating docs.  Use no too large 50Mb
`gc-cons-threshold' instead.

See
https://yhetil.org/emacs-devel/9778F176-E724-4E61-B0FB-327BCDD316C0@acm.org
for the testing behind the 50Mb constant.
2022-06-17 13:18:39 +08:00
Ihor Radchenko 3684c79672
doc/Makefile: Disable GC during export
* doc/Makefile (org.texi):
(orgguide.texi): Set `gc-cons-threshold` to `most-positive=fixnum' and
thus disable garbage collection while exporting manuals.  This reduces
the manual generation time.
2022-06-16 08:32:24 +08:00
Marco Wahl b6c5f028a0 Fix parallel make of docs
* doc/Makefile: Split multiple target "org.texi orgguide.texi".
* mk/org-fixup.el (org-make-manual, org-make-guide):  New functions.
  (org-make-manuals): Make obsolete.

Reported by Ulrich Müller.  https://list.orgmode.org/uee67gr96@gentoo.org/
2021-12-21 12:12:21 +01:00
Bastien 73875939a8 doc/Makefile: Also make orgguide.html 2021-09-29 15:06:08 +02:00
Bastien 72af213be8 Merge branch 'maint' 2021-09-12 18:07:13 +02:00
Bastien 4be129f543 doc/Makefile: Clean up *.info files too
Continue 9802877fb by cleaning up *.info files and removing
duplicate *.html pattern.
2021-09-12 18:05:37 +02:00
Greg Minshall c34aae1d6b doc/Makefile: `cleanall` target now deletes doc/{org,orgguide}.texi
* doc/Makefile: `cleanall` target now deletes doc/{org,orgguide}.texi

In the past, at least one of these seems to have been a tracked
(source?) file.  That is no longer the case.
2021-05-29 22:36:08 +02:00
Bastien 4362b93018 Merge branch 'maint' 2021-05-16 10:36:42 +02:00
Bastien 9802877fbe doc/Makefile: Use the .info extension for org.info and orgguide.info
* doc/Makefile (install): Use the .info extension when generating
info files (org.info and orgguide.info).
2021-05-16 10:36:02 +02:00
Stefan Monnier 129c33dddf * lisp/org-agenda.el: Use lexical-binding
- Removed the global (defvar date) and (defvar entry) so as not to
  conflict with function arguments of that name.  Instead I added such
  `defvar`s in the body of each of the functions where it
  seemed needed.
- I added some FIXMEs for some issues I found along the way.
- Added an `org-dlet` macro, just like I had done for `calendar-dlet`,
  but I also use `defvar` "manually" at some places, when splitting an
  existing `let` into a mix of `let`s and `dlet`s seemed too much trouble.
- Removed uses of `org-let and `org-let2` not only because I consider
  them offensive to my sense of aesthetics but also because they're
  basically incompatible with lexical scoping.
  I replaced them with uses of `cl-progv` which are a bit more verbose.
  Maybe we should define some `org-progv` macro on top of `cl-progv` to
  make the code less verbose, but I didn't do that because I like the
  fact that the current code makes uses of `eval` a bit more obvious
  (since these behave differently with lexical scoping than with
  lexical binding, it seemed worthwhile).
- Removed the use of `eval` in `org-store-agenda-views` which was only
  placed there in order to use a macro before it's defined (it would
  have been simpler/cleaner to just move that functions *after* the
  macro, but with the new code the problem doesn't occur any more anyway).
- Replaced a few `(lambda...) with actual closures.

Detailed changes follow:

(date, entry): Don't declare as being globally dynbound.
(org-agenda-format-date-aligned): Remove unused var `weekyear`.
(org-agenda-mode): `run-mode-hooks` is always available nowadays.
(org-agenda-undo): Remove unused var `last-undo-buffer`.
(org-agenda): Rename arg to `keys` and then dyn-bind it as `org-keys`.
Remove unused vars `buf` and `key`.
(org-agenda): Use `pcase` and `cl-progv` instead of `org-let`.
(org-let, org-let2): Mark as obsolete.
(org-agenda-run-series): Use `cl-progv` instead of `org-let` and `org-let2`.
(org-agenda-run-series): New function.
(org--batch-agenda): New function extracted from `org-batch-agenda`.
(org-batch-agenda): Use it.
(org--batch-agenda-csv): New function extracted from `org-batch-agenda-csv`.
(org-batch-agenda-csv): Use it.
(org--batch-store-agenda-views): New function, extracted from
`org-batch-store-agenda-views`.
(org-store-agenda-views, org-batch-store-agenda-views): Use it.
(org--batch-store-agenda-views): Use `cl-progv` instead of
`org-eval-in-environment`.
(org-agenda-write): Use `cl-progv` instead of `org-let`.
Use `with-current-buffer`.
(org-agenda-filter-any): Use `cl-some` instead of `eval`.
(org-agenda-list): Remove unused var `e`.
(org-search-view): η-reduce.
(crm-separator): Declare var.
(org-agenda-skip-if): Remove unused var `beg`.
(org-agenda-list-stuck-projects): Use a closure rather than `(lambda..).
(diary-modify-entry-list-string-function, diary-file-name-prefix)
(diary-display-function): Declare vars.
(org-diary): Declare `date` and `entry` as dynbound.
(org-agenda-get-day-entries): Use `org-dlet`.
(org-agenda-get-timestamps, org-agenda-get-progress)
(org-agenda-get-deadlines, org-agenda-get-scheduled, org-agenda-get-blocks):
Declare `date` as dynbound.
(org-agenda-get-sexps, org-class): Declare `date` and `entry` as dynbound.
(org-agenda-format-item): Declare the vars mentioned in
`org-compile-prefix-format` as dyn-bound.
Also binding `extra`, suggested by Kyle Meyer <kyle@kyleam.com>.
(org-compile-prefix-format): Remove unused var `e`.
Use `member` rather than or+equal.
(org-set-sorting-strategy): Minor simplification.
(org-entries-lessp): Use `org-dlet`.
(org-agenda-redo): Declare var `org-agenda-tag-filter-while-redo`.
(org-agenda-redo): Use `cl-progv` rather than `org-let`.
(org-agenda-filter): Remove unused var `rpl-fn`.
Use `org-pushnew-to-end` to replace `add-to-list` on lexical var.
(org-agenda-filter-by-tag): Remove unused var `n`.
(org-agenda-filter-apply): Use `org-dlet`.
(org-agenda-compute-starting-span): Remove unused var `dg`.
(org-agenda-forward-block): Remove unused var `pos`.
(org-archive-from-agenda): Declare var.
(org-agenda-refile): Remove unused var `pos`.
(org-agenda-headline-snapshot-before-repeat): Declare var.
(org-agenda-todo): Remove redundant use of `bound-and-true-p`.
(org-agenda-add-note): Remove unused var `hdmarker` and unused `arg`.
(org-agenda-change-all-lines): Remove unused var `pl`.
(org-agenda-priority): Remove unused var `marker`.
(org-agenda-set-effort): Remove unused var `newhead`.
(org-agenda-schedule): Remove unused var `type`.
(org-agenda-clock-cancel): Remove unused `arg`.
(org-agenda-execute-calendar-command): Use `org-dlet`.
(org-agenda-bulk-action): Use closures instead of `(lambda ...).
(org-agenda-show-the-flagging-note): Remove unused vars `heading` and
`newhead`.
(org-agenda-remove-flag): Avoid `setq`.

* testing/org-test.el (org--compile-when): New macro.
(org-test-jump): Use it so compilation doesn't fail or generate broken
code when `jump` is not available.

* testing/lisp/test-org-src.el:
* testing/lisp/test-org-attach.el:
* testing/lisp/test-org-agenda.el:
* testing/lisp/test-ob-java.el: Pass explicit filename to `require`
so as not to rely on ".../testing" being in `load-path` during compilation.

* lisp/org-num.el: Require` org`.

* lisp/org-macs.el (org-eval-in-environment): Declare obsolete.
(org-dlet, org-pushnew-to-end): New macros.

* doc/Makefile (org.texi, orgguide.texi, %_letter.tex): Simplify quoting.

* contrib/lisp/ob-sclang.el: Don't crash compilation when `sclang`
is not available.

* contrib/lisp/ob-clojure-literate.el: Don't crash compilation when `cider`
is not available.

* contrib/lisp/ob-arduino.el: Don't crash compilation when `arduino-mode`
is not available.

* .gitignore: Add files generated during `make packages/org`.
2021-03-09 22:56:33 -05:00
Nicolas Goaziou afd566e633 Add org-guide.org to the build process 2019-03-19 02:25:18 +01:00
Nicolas Goaziou 97a8eb00ef Makefile: Add "org-manual.org" as a pre-requisite
* doc/Makefile (org.texi): Makefile: Add "org-manual.org" as
  a pre-requisite.
2018-05-09 08:19:21 +02:00
Nicolas Goaziou c87d70439b "make doc" generate "org.texi"
* doc/Makefile (org.texi): New rule.
* mk/org-fixup.el (org-make-manuals): New function.
2018-05-09 02:23:10 +02:00
Kyle Meyer b00705f9e3 doc/Makefile: Use printf to generate org-version.tex
* doc/Makefile (org-version.tex): Use printf instead of echo to
increase portability.

By default GNU coreutil's echo disables the interpretation of
backslash escapes (-E option), but this isn't the case for some echo
variants.

Reported-by: Dale <dale@codefu.org>
<https://lists.gnu.org/archive/html/emacs-orgmode/2017-06/msg00619.html>
2017-06-30 13:27:53 -04:00
Kyle Meyer a8d007db15 doc/Makefile: Auto-generate org-version.tex for orgcard
* doc/Makefile: Add rule to generate org-version.tex.
* doc/orgcard.tex: Include org-version.tex rather than explicitly
setting version and year.

This removes the only instance in the repo where the Org version is
hardcoded.
2017-06-28 00:54:32 -04:00
Achim Gratz 6dc83e651d doc/Makefile: avoid spurious whitespace in environment variables
* doc/Makefile (%.pdf): Ensure that LANG and LC_ALL are set to "C",
  not "C   " (with trailing whitespace).

Make evaluation order produces spurious whitespace in variables when a
variable definition is followed by whitespace plus a comment.
2014-01-07 21:23:45 +01:00
Achim Gratz bf352eceda Rename utils/ to mk/, move some files to mk/ and make the requisite changes throughout
* Makefile: Include default.mk and targets.mk from mk/ where they've
  been moved to.

* README_maintainer: Rename utils to make throughout.

* doc/Makefile: Rename utils to make throughout.

* doc/org.texi: Remove reference to utils/, x11idle.c is now in
  contrib/scripts.

* mk/make_emacs_changelog: Add mk/ to list of directories not to be
  reported in Emacs' ChangeLog.  Also retain utils/ and re-add
  UTILITIES; add a comment explaining why these need to stay.

* mk/default.mk: Rename utils to make throughout.  Include version.mk
  from mk/ where it's been moved to.

* mk/targets.mk: Rename utils to make throughout.

* mk/server.mk: Rename utils to make throughout.  Only put those files
  from mk/ into the archives that are needed outside the server:
  default.mk targets.mk version.mk and org-fixup.el.

* lisp/org-compat.el: Rename utils to make throughout.

* .gitignore:  Rename utils to make throughout.
2012-08-26 15:27:19 +02:00
Achim Gratz f8cc3189f5 Makefile: deactivate perl scripts unless server configuration is active
* doc/Makefile: Do not use perl scripts in util/ unless the server
  configuration $(SERVERMK) is set.
2012-08-26 09:25:34 +02:00
Bastien Guerry 0c8e87b8d2 Rename UTILITIES/ to utils/ 2012-08-23 12:47:10 +02:00
Achim Gratz 0db8233460 replace the remaining occurences of sed with emacs scripts, implement mkdir with install
* UTILITIES/org-fixup.el (org-make-local-mk): New function to create a
  local.mk template from default.mk.

* UTILITIES/org-fixup.el (org-make-letterformat): New function to
  replace the format string for A4 with one for Letter.

* default.mk: Few cosmetic changes to the template section.  Add
  definition MAKE_LOCAL_MK for call to org-make-local-mk.  Remove
  definition for SED, which is not used anymore.  Implement MKDIR with
  'install -d' by default.  Since both CP and MKDIR are now
  implemented with install, this reduces the number of external
  dependencies.  Add mode settings to both invocations of install to
  keep the modes of installed files sane even if umask is set to a
  strange value.

* targets.mk: Remove sed script and use $(MAKE_LOCAL_MK) instead.

* doc/Makefile: Remove sed script and replace with emacs script.  This
  script can not be placed into a variable since it would expand $<
  and $@ in the context of the "card" target rather than the pattern
  rule.
2012-05-30 12:30:21 +02:00
Achim Gratz a0a344bff1 inject version strings into orgguide
* doc/orgguide.texi: Include version strings from "org-version.inc".

* doc/Makefile: Make "org-version.inc" a dependency of "guide".
2012-05-18 07:45:46 +02:00
Achim Gratz b4693de937 clean up server targets in doc/Makefile and make sure they are working
* doc/Makefile: ignore errors from removing directory (may not exist),
  manual depends on 'org-version.inc'.
2012-05-18 07:45:46 +02:00
Achim Gratz bcced6a51d Makefile: avoid spurious recompilations of documentation
* doc/Makefile: org-version.inc is again dependent on org.texi.  This
  avoids recompilation when nothing has been changed; target "clean"
  still removes orgversion.texi to produce a consistent set of
  documentation and code after a "make clean" on toplevel

* targets.mk: add "doc" as prerequisite to "all" and "compile" to have
  it call "clean" in the doc subdir.
2012-05-18 07:45:45 +02:00
Achim Gratz 0a9c29d305 allow customization of the "doc" target to skip certain types of documentation
* doc/Makefile: read targets to make for "doc" from $(ORG_MAKE_DOC),
  defaults to "info html pdf"; can be overridden by the user in
  local.mk.

* targets.mk: read targets to make for "doc" and "docs" from
  $(ORG_MAKE_DOC), defaults to "info html pdf"; can be overridden by
  the user in local.mk.

* default.mk: document ORG_MAKE_DOC and provide a (commented) example
  of how to have make only produce info documentation.
2012-04-22 10:51:29 +02:00
Achim Gratz 22447fe485 fix typo
* doc/Makefile: fix typo, it is org-version.inc, not org-version.texi
2012-04-22 10:51:21 +02:00
Achim Gratz c5377f6034 always make version files
* doc/Makefile: make org-version.inc .PHONY so that it is always re-made.

* lisp/Makefile: make org-version.el .PHONY so that it is always re-made.
2012-04-21 17:38:43 +02:00
Achim Gratz f6c2848dfb * add missing dependencies on org-version.inc
* doc/Makefile: org-version.inc must be a dependency of "pdf" and "html"
2012-04-21 16:09:02 +02:00
Achim Gratz e102e411e4 doc/Makefile: rename/add auto-generated files to be compatible with Emacs
* doc/Makefile: rename auto-generated file "git-describe.texi" to
  "org-version.inc" to allow for easier inclusion into Emacs.

* doc/org.texi: include "org-version.inc" instead of
  "git-describe.texi".

* lisp/Makefile: new auto-generated file org-version.el with autoload
  cookies.  The version strings will be pulled during autoload
  extraction into org-install.el (standalone org-mode) or
  ../loaddefs.el (Emacs).
2012-04-20 21:04:14 +02:00
Achim Gratz 6a3ec67abd Introduce $(datadir), prefix all installation paths with $(DESTDIR)
Makefile: remove includes for maintainer targets, these will go
	into local.mk on the server

	default.mk: introduce $(datadir) to replace $(etcdir) in etc/Makefile

	doc/Makefile: replace $etcdir) with $(datadir)

	lisp/Makefile: record ODT styles location as defconst in org-install

	{doc,etc,lisp}/Makefile: prefix all installation targets with $(DESTDIR)
2012-04-20 21:04:11 +02:00
Achim Gratz 6da2d089b0 move all version strings into org-install.el
* targets.mk: check for release and git version and record this
	into environment variables for use in sub-make invocations; add
	new target "compile-dirty" that does not invoke "make clean" first
	* doc/Makefile, lisp/Makefile: remove git version check, since
	they are now provided by first-level make
	* lisp/Makefile: add insertion of version information into
	org-install.el, have org-install.el depend on LISPF rather than
	LISPC so that autoloads can be produced without compiling
	everything and remove insertion into org.el and re-compilation
	during install; add new target "compile-dirty" to support
	invocation from first-level make
	* lisp/org.el (org-version): remove determination of version
	information, show "N/A" if the information is not provided via
	org-install.el
2012-04-20 21:04:10 +02:00
Achim Gratz 306c748f63 inject git-describe version and date into org manual
* doc/Makefile: introduce target for git-describe.texi, which is an
	  automatically generated file that records the output of git-describe
	  and date; remove this file during make clean
	* doc/org.texi: remove @set for VERSION and DATE and do an @include
	  git-describe.texi instead
2012-04-20 21:04:09 +02:00
Achim Gratz 8bbf77a748 finish cleanup on infodir, some refinements on rules
* doc/Makefile: cleanall additionally removes the directories for
	manual and guide; fix the dir file in infodir after removal of org
	documentation

	* lisp/Makefile: remove debug statement
2012-04-20 21:04:08 +02:00
Achim Gratz 501f9b1741 use sed instead of perl, add target clean-install
* Makefile, lisp/Makefile, doc/Makefile: add target clean-install
	to remove files in install-directories

	* default.mk: add customization variable $(SED)

	* doc/Makefile: do not remove dir while cleaning

	* lisp/Makefile: use sed instead of perl to weave git-status into
	org.el and ignore any errors while doing it.  Keep git status in
	$(GITSTATUS) to make it more clear what happens in the check.
2012-04-20 21:04:08 +02:00
Achim Gratz a5cb04dcd8 hand off ./doc to sub-make
* Makefile: use info function for output and call shell only once
* default.mk: add PDFTEX and RMR variables for customization
* lisp/Makefile: add target 'all' and create $(lispdir) if necessary
* maint-targets.mk: invoke sub-make for HTML manuals
* maint.mk: remove unsused VARIABLES
* targets.mk: invoke sub-make for ./doc and clean up some targets
2012-04-20 21:04:07 +02:00