Укажите на язык программирования в файле без расширения

При записи исполняемых сценариев и декларативных конфигурационных файлов, которые используют общий язык (например, Python), я часто нахожу это нежелательным для добавления расширения имени файла. Многие текстовый редактор подсветки синтаксиса (например, Geany) впоследствии неспособны автоматически определить тип файла.

Есть ли какой-либо стандартный метод для указания редакторам тип источника в файле?

9
задан Matt Joiner 31 December 2009 в 05:35
поделиться

2 ответа

Обычно линия shebang используется как запасной вариант.

Например, сценарий Ruby без расширения должен начинаться с:

#!/usr/bin/env ruby
7
ответ дан 4 December 2019 в 08:15
поделиться

Вим

Вим имеет понятие, называемое modeline. Моделин - это специально отформатированная строка либо в первой, либо в последних 5 строках текстового файла, которая позволяет использовать :setlocal локальные переменные. Например, для C:

 /* vi: set filetype=c fileencoding=UTF-8 shiftwidth=4 tabstop=4 expandtab */

или Ruby:

 # vi: set filetype=ruby fileencoding=UTF-8 shiftwidth=2 tabstop=2 expandtab

Дополнительная документация.

Emacs

Emacs имеет аналогичное понятие, называемое File Variables.

Переменные файла указываются либо в начале файла (в первой строке, либо если есть строка shebang, то во второй) в этом виде:

/* *-* mode: cc c-basic-offset: 4; tab-width: 4; indent-tabs-mode: nil *-* */

или в конце:

# Local Variables:
# mode: ruby
# coding: utf-8
# c-basic-offset: 2
# tab-width: 2
# indent-tabs-mode: nil
# End:

jEdit

jEdit называет это буферно-локальными свойствами. Они должны находиться в пределах первых или последних 10 строк и выглядеть следующим образом:

# :mode=ruby:indentSize=2:tabSize=2:noTabs=true:

jEdit также использует линию shebang как запасной вариант для определения режима.

Komodo Edit

Существует плагин под названием Komode (pun intended), который добавляет поддержку моделирования в Komodo Edit:

# komode: le=unix language=ruby codepage=utf8 tab=2 notabs indent=2

Он также понимает ограниченное подмножество мод Vim.

Другие

Многие другие редакторы также имеют либо свои собственные варианты этого, либо поддерживают один из вышеперечисленных (обычно Vim).

Кодировка на питоне/рубине

Как Ruby 1.9, так и Python требуют, чтобы кодировка для исходных файлов не-ASCII была явно указана. К счастью, они делают это таким образом, что это совместимо с моделями Emacs и Vim. (В основном, они ищут строковую кодировку , за которой следует несловесный символ, за которым следует пробел, за которым следует действительное кодировочное имя. Оба вида кодирования Вима fileencoding= и Emacs : удовлетворяют этим требованиям.)

Modeline Generator

Вот простой modeline generator, который генерирует модемы для Vim, Emacs и jEdit.

.
19
ответ дан 4 December 2019 в 08:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: