Hot-keys on this page

r m x p   toggle line displays

j k   next/prev highlighted chunk

0   (zero) top of page

1   (one) first highlighted chunk

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

# -*- coding: utf-8 -*- 

""" 

    pygments.modeline 

    ~~~~~~~~~~~~~~~~~ 

 

    A simple modeline parser (based on pymodeline). 

 

    :copyright: Copyright 2006-2014 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 l in lines[max_lines:0:-1]: 

        ret = get_filetype_from_line(l) 

        if ret: 

            return ret 

 

    return None