File: org-lint.el.html

This library implements linting for Org syntax. The process is started by calling org-lint command, which see.

New checkers are added by org-lint-add-checker function. Internally, all checks are listed in org-lint--checkers.

Results are displayed in a special "*Org Lint*" buffer with a dedicated major mode, derived from tabulated-list-mode. In addition to the usual key-bindings inherited from it, "C-j" and
"TAB" display problematic line reported under point whereas "RET"
jumps to it. Also, "h" hides all reports similar to the current one. Additionally, "i" removes them from subsequent reports.

Checks currently implemented report the following:

- duplicates CUSTOM_ID properties,
- duplicate NAME values,
- duplicate targets,
- duplicate footnote definitions,
- orphaned affiliated keywords,
- obsolete affiliated keywords,
- deprecated export block syntax,
- deprecated Babel header syntax,
- missing language in source blocks,
- missing back-end in export blocks,
- invalid Babel call blocks,
- NAME values with a colon,
- wrong babel headers,
- invalid value in babel headers,
- misuse of CATEGORY keyword,
- "coderef" links with unknown destination,
- "custom-id" links with unknown destination,
- "fuzzy" links with unknown destination,
- "id" links with unknown destination,
- links to non-existent local files,
- SETUPFILE keywords with non-existent file parameter,
- INCLUDE keywords with misleading link parameter,
- obsolete markup in INCLUDE keyword,
- unknown items in OPTIONS keyword,
- spurious macro arguments or invalid macro templates,
- special properties in properties drawers,
- obsolete syntax for properties drawers,
- invalid duration in EFFORT property,
- missing definition for footnote references,
- missing reference for footnote definitions,
- non-footnote definitions in footnote section,
- probable invalid keywords,
- invalid blocks,
- misplaced planning info line,
- probable incomplete drawers,
- probable indented diary-sexps,
- obsolete QUOTE section,
- obsolete "file+application" link,
- obsolete escape syntax in links,
- spurious colons in tags,
- invalid bibliography file,
- missing "print_bibliography" keyword,
- invalid value for "cite_export" keyword,
- incomplete citation object.

Defined variables (7)

org-lint--checkersList of all available checkers.
org-lint--local-checkersList of checkers used to build current report.
org-lint--report-mode-abbrev-tableAbbrev table for ‘org-lint--report-mode’.
org-lint--report-mode-hookHook run after entering OrgLint mode.
org-lint--report-mode-mapLocal keymap for ‘org-lint--report-mode’ buffers.
org-lint--report-mode-syntax-tableSyntax table for ‘org-lint--report-mode’.
org-lint--source-bufferSource buffer associated to current report buffer.

Defined functions (70)

make-org-lint-checker
make-org-lint-checker--cmacro
org-lint(&optional ARG)
org-lint--collect-duplicates(AST TYPE EXTRACT-KEY EXTRACT-POSITION BUILD-MESSAGE)
org-lint--current-checker(&optional ENTRY)
org-lint--current-line()
org-lint--display-reports(SOURCE CHECKERS)
org-lint--generate-reports(BUFFER CHECKERS)
org-lint--hide-checker()
org-lint--ignore-checker()
org-lint--jump-to-source()
org-lint--report-mode()
org-lint--show-source()
org-lint-add-checker(NAME SUMMARY FUN &rest PROPS)
org-lint-checker-categories(CL-X)
org-lint-checker-categories--cmacro(CL-WHOLE-ARG CL-X)
org-lint-checker-function(CL-X)
org-lint-checker-function--cmacro(CL-WHOLE-ARG CL-X)
org-lint-checker-name(CL-X)
org-lint-checker-name--cmacro(CL-WHOLE-ARG CL-X)
org-lint-checker-p(CL-X)
org-lint-checker-p--cmacro(CL-WHOLE-ARG CL-X)
org-lint-checker-summary(CL-X)
org-lint-checker-summary--cmacro(CL-WHOLE-ARG CL-X)
org-lint-checker-trust(CL-X)
org-lint-checker-trust--cmacro(CL-WHOLE-ARG CL-X)
org-lint-colon-in-name(AST)
org-lint-deprecated-category-setup(AST)
org-lint-deprecated-export-blocks(AST)
org-lint-deprecated-header-syntax(AST)
org-lint-duplicate-custom-id(AST)
org-lint-duplicate-footnote-definition(AST)
org-lint-duplicate-name(AST)
org-lint-duplicate-target(AST)
org-lint-extraneous-element-in-footnote-section(AST)
org-lint-file-application(AST)
org-lint-incomplete-citation(AST)
org-lint-incomplete-drawer(_)
org-lint-indented-diary-sexp(_)
org-lint-invalid-babel-call-block(AST)
org-lint-invalid-block(_)
org-lint-invalid-cite-export-declaration(AST)
org-lint-invalid-coderef-link(AST)
org-lint-invalid-custom-id-link(AST)
org-lint-invalid-effort-property(AST)
org-lint-invalid-fuzzy-link(AST)
org-lint-invalid-id-link(AST)
org-lint-invalid-keyword-syntax(_)
org-lint-invalid-macro-argument-and-template(AST)
org-lint-link-to-local-file(AST)
org-lint-misplaced-planning-info(_)
org-lint-missing-backend-in-export-block(AST)
org-lint-missing-language-in-src-block(AST)
org-lint-missing-print-bibliography(AST)
org-lint-non-existent-bibliography(AST)
org-lint-non-existent-setupfile-parameter(AST)
org-lint-obsolete-affiliated-keywords(_)
org-lint-obsolete-include-markup(AST)
org-lint-obsolete-properties-drawer(AST)
org-lint-orphaned-affiliated-keywords(AST)
org-lint-percent-encoding-link-escape(AST)
org-lint-quote-section(AST)
org-lint-special-property-in-properties-drawer(AST)
org-lint-spurious-colons(AST)
org-lint-undefined-footnote-reference(AST)
org-lint-unknown-options-item(AST)
org-lint-unreferenced-footnote-definition(AST)
org-lint-wrong-header-argument(AST)
org-lint-wrong-header-value(AST)
org-lint-wrong-include-link-parameter(AST)

Defined faces (0)