summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGeorg Brandl <georg@python.org>2022-01-25 07:41:27 +0100
committerGeorg Brandl <georg@python.org>2022-01-25 07:41:27 +0100
commitf6d3ce6f8d1f523b2f671a5f91d8a906c761685c (patch)
tree1713fec79b18f43c6f4c7420487d10f0944acafe
parentab4afd821aa41403f7a0b1e714112c40b2ad843b (diff)
downloadpygments-git-f6d3ce6f8d1f523b2f671a5f91d8a906c761685c.tar.gz
Add a "plugins" argument to get_all_lexers
and use it in the "duplicate filenames" checker.
-rw-r--r--CHANGES14
-rw-r--r--pygments/lexers/__init__.py10
-rw-r--r--scripts/detect_missing_analyse_text.py14
3 files changed, 24 insertions, 14 deletions
diff --git a/CHANGES b/CHANGES
index fbb2a25e..c7c0e46e 100644
--- a/CHANGES
+++ b/CHANGES
@@ -7,6 +7,9 @@ Version 2.12.0
--------------
(not released yet)
+- Added ``plugins`` argument to ``get_all_lexers()``.
+
+
Version 2.11.2
--------------
(released January 6th, 2022)
@@ -20,6 +23,7 @@ Version 2.11.2
- Remove ``underline`` from ``Whitespace`` style in the ``Tango`` theme (#2020)
- Fix ``IRC`` and ``Terminal256`` formatters not backtracking correctly for custom token types, resulting in some unstyled tokens (#1986)
+
Version 2.11.1
--------------
(released December 31st, 2021)
@@ -30,6 +34,7 @@ Version 2.11.1
* JSON: Fix a regression which caused whitespace before ``:`` to result in ``Error`` tokens (#2010)
* SPICE: Various improvements (#2009)
+
Version 2.11.0
--------------
(released December 30th, 2021)
@@ -68,13 +73,13 @@ Version 2.11.0
* objdump-nasm: Improve handling of ``--no-show-raw-insn`` dumps (#1981)
* Prolog: Support escaped ``\`` inside quoted strings (#1479)
* Python:
-
+
- Support ``~`` in tracebacks (#2004)
- Support the pattern matching keywords (#1797, #1994)
* RobotFramework: Improve empty brace handling (#1921, #1922)
* Terraform
-
+
- Add the 'set' type (#1909)
- Support heredocs (#1909)
@@ -130,7 +135,7 @@ Version 2.10.0
* LLVM (#1824)
* Python (#1852)
* Rust
-
+
- Fix lexing of "break" and "continue" (#1843)
- Improve attribute handling (#1813)
@@ -215,6 +220,7 @@ Version 2.9.0
* Gruvbox light+dark (#1763)
+
Version 2.8.0
-------------
(released February 14, 2021)
@@ -297,6 +303,7 @@ Version 2.8.0
- Improve ``analyze_text`` logic for ``CBM Basic V2`` (#1607)
- Improve LaTeX formatter (#1708, #1709)
+
Version 2.7.4
-------------
(released January 12, 2021)
@@ -333,6 +340,7 @@ Version 2.7.4
Thanks to Google's OSS-Fuzz project for finding many of these bugs.
+
Version 2.7.3
-------------
(released December 6, 2020)
diff --git a/pygments/lexers/__init__.py b/pygments/lexers/__init__.py
index 50add7e4..79c4e9bf 100644
--- a/pygments/lexers/__init__.py
+++ b/pygments/lexers/__init__.py
@@ -47,14 +47,18 @@ def _load_lexers(module_name):
_lexer_cache[cls.name] = cls
-def get_all_lexers():
+def get_all_lexers(plugins=True):
"""Return a generator of tuples in the form ``(name, aliases,
filenames, mimetypes)`` of all know lexers.
+
+ If *plugins* is true (the default), plugin lexers supplied by entrypoints
+ are also returned. Otherwise, only builtin ones are considered.
"""
for item in LEXERS.values():
yield item[1:]
- for lexer in find_plugin_lexers():
- yield lexer.name, lexer.aliases, lexer.filenames, lexer.mimetypes
+ if plugins:
+ for lexer in find_plugin_lexers():
+ yield lexer.name, lexer.aliases, lexer.filenames, lexer.mimetypes
def find_lexer_class(name):
diff --git a/scripts/detect_missing_analyse_text.py b/scripts/detect_missing_analyse_text.py
index fa95c47a..c377b0b6 100644
--- a/scripts/detect_missing_analyse_text.py
+++ b/scripts/detect_missing_analyse_text.py
@@ -17,19 +17,17 @@ import argparse
def main(args):
uses = {}
- for name, aliases, filenames, mimetypes in get_all_lexers():
+ for name, aliases, filenames, mimetypes in get_all_lexers(plugins=False):
cls = find_lexer_class(name)
if not cls.aliases and not args.skip_no_aliases:
print(cls, "has no aliases")
for f in filenames:
- if f not in uses:
- uses[f] = []
- uses[f].append(cls)
+ uses.setdefault(f, []).append(cls)
ret = 0
for k, v in uses.items():
if len(v) > 1:
- #print "Multiple for", k, v
+ # print("Multiple for", k, v)
for i in v:
if i.analyse_text is None:
print(i, "has a None analyse_text")
@@ -43,8 +41,8 @@ def main(args):
if __name__ == '__main__':
parser = argparse.ArgumentParser()
parser.add_argument('--skip-no-aliases',
- help='Skip checks for a lexer with no aliases',
- action='store_true',
- default=False)
+ help='Skip checks for a lexer with no aliases',
+ action='store_true',
+ default=False)
args = parser.parse_args()
sys.exit(main(args))