Spaces:
Running
Running
""" | |
pygments.modeline | |
~~~~~~~~~~~~~~~~~ | |
A simple modeline parser (based on pymodeline). | |
:copyright: Copyright 2006-2023 by the Pygments team, see AUTHORS. | |
:license: BSD, see LICENSE for details. | |
""" | |
import re | |
__all__ = ['get_filetype_from_buffer'] | |
modeline_re = re.compile(r''' | |
(?: vi | vim | ex ) (?: [<=>]? \d* )? : | |
.* (?: ft | filetype | syn | syntax ) = ( [^:\s]+ ) | |
''', re.VERBOSE) | |
def get_filetype_from_line(l): | |
m = modeline_re.search(l) | |
if m: | |
return m.group(1) | |
def get_filetype_from_buffer(buf, max_lines=5): | |
""" | |
Scan the buffer for modelines and return filetype if one is found. | |
""" | |
lines = buf.splitlines() | |
for l in lines[-1:-max_lines-1:-1]: | |
ret = get_filetype_from_line(l) | |
if ret: | |
return ret | |
for i in range(max_lines, -1, -1): | |
if i < len(lines): | |
ret = get_filetype_from_line(lines[i]) | |
if ret: | |
return ret | |
return None | |