2013-08-11 3 views
9

Я знаю, что emacs может распознать файл с помощью расширения, -*- mode -*- первой строки и даже строки shebang, но что мне делать, если я хочу переопределить shebang?Признать файл с shebang и без расширения

Например, сценарий, который начинается с

#!/usr/bin/env python2.7 
... 

не будет признан притон линии в одиночку. Я также не могу добавить строку -*-python-*-, потому что тогда оболочка пытается ее проанализировать. Как мне с этим справиться?

ответ

10

Вы положили -*- mode: python -*- на номер второй линии (специальное исключение, добавленное специально для штучек shebang).

+0

это _almost_ смущающе очевидно. – Shep

3

Как это:

#!/usr/bin/env python2.7 

print "test" 

# Local Variables: 
# mode: python 
# End: 

Эта информация поступает из Specifying File Variables узла info.

  1. Используйте f1 i чтобы ввести информацию.
  2. Использование g(emacs), чтобы перейти к информации emacs.
  3. Используйте gSpecifying File Variables, чтобы перейти на страницу. Чтобы заполнить имена узлов, вы можете использовать вкладку.
+0

«Тест на печать» «Необходима строка? – Shep

+0

это не работает для меня, это где-то документировано? – Shep

+0

print «test» не требуется, конечно, это всего лишь код python, чтобы убедиться, что функция блокировки шрифтов включена. Если это не сработает, вам необходимо обновить Emacs. Текущая версия 24.3 –

5

Вы можете попробовать положить что-то вроде

(add-to-list 'interpreter-mode-alist '("python2.7" . python-mode)) 

в вашем .emacs. См. «Choosing File Modes» для получения дополнительной информации.

+0

Я не могу заставить это работать, вставив эту строку непосредственно в файл '.emacs'. Ожидаете ли вы чего-то, как это работает, или должно ли это работать? – Shep

+0

Я не тестировал его, но я сделал несколько экспериментов, и я думаю, что он должен работать. Вам необходимо перезапустить Emacs или оценить эту строку, чтобы применить изменение. – KrzysiekJ