Редактор Atom: несколько фрагментов
Это такой простой вопрос, но я не могу найти никакой документации помимо readme.
Как я могу иметь несколько пользовательских фрагментов в Atom Editior:
Например, у меня есть это в моем snippets.cson прямо сейчас
'.source.js':
'Normal Comment Block':
'prefix': 'cmm'
'body': """
//**********************************************************************************
//
//**********************************************************************************
"""
'.source.js':
'Dashed Comment Block':
'prefix': 'c--'
'body': """
//----------------------------------------------------------------------------------
//
//----------------------------------------------------------------------------------
"""
Но cmm не работает, я могу использовать только последний элемент в snippets.cson. Есть какие нибудь идеи как это починить? У меня есть около десятка различных фрагментов, которые я бы хотел использовать, но я не могу понять, как правильно их включить.
Ответы
Ответ 1
Формат файла конфигурации называется CSON, обозначение объекта CoffeeScript. Подобно JSON (JavaScript Object Notation), это текстовый формат для описания простых объектов. Из-за чего, когда вы указываете ключ дважды, например .source.js
в вашем примере, второй экземпляр перезаписывает первый. Если у вас просто один .source.js
все будет нормально работать:
'.source.js':
'Normal Comment Block':
'prefix': 'cmm'
'body': """
//**********************************************************************************
// $1
//**********************************************************************************
$0
"""
'Dashed Comment Block':
'prefix': 'c--'
'body': """
//----------------------------------------------------------------------------------
// $1
//----------------------------------------------------------------------------------
$0
"""
Кроме того, я взял на себя смелость добавить вкладки в свои фрагменты, чтобы при расширении фрагмента курсор сначала должен был помещаться внутри комментария. Вы можете ввести свой комментарий, а затем нажмите TAB, чтобы выйти и продолжить.
Ответ 2
В дополнение к объяснению @Lee, вот пример, если вы не собираетесь настраивать несколько фрагментов, организованных языком программирования:
# HTML Snippets
'.text.html':
'HTML Comment':
'prefix': '<!'
'body': '<!-- $1 -->'
# Sass Snippets
'.source.scss':
'Section Comment':
'prefix': 'sc'
'body': """
/*=================================================
$1
=================================================== */
"""
'Sub Section Comment':
'prefix': 'ssc'
'body': """
/* $1
=================================================== */
"""
# JavaScript Snippets
'.source.js':
'jQuery - Bind Event':
'prefix': 'bind'
'body': """
$( $1 ).on( '$2', '$3', function( $4 ) {
$5
});
"""
В этом примере я включил HTML, Sass и Javascript, но вы могли бы включить другие, такие как CSS,...
Надеюсь, это было полезно.
Ответ 3
Нашел странную ошибку с несколькими фрагментами в Atom. Я надеюсь, что этот ответ может помочь кому-то с той же проблемой (я использую Mac-версию Atom). Поэтому я пошел добавить новый фрагмент файла snippets.cson, и я скопировал старый фрагмент и вставил его ниже в качестве шаблона, подобного этому, и сохранил их, хотя они были тем же, что и '.source.php': 'Debug': 'prefix': 'prepr' 'body': """ echo "<pre>",print_r($_POST, 1),"</pre>"; die(); """ 'Debug': 'prefix': 'prepr' 'body': """ echo "<pre>",print_r($_POST, 1),"</pre>"; die(); """
После сохранения этого я отредактировал второй имеют другой заголовок и префикс и код тела '.source.php': 'Debug': 'prefix': 'prepr' 'body': """ echo "<pre>",print_r($_POST, 1),"</pre>"; die(); """ 'different': 'prefix': 'different' 'body': """ echo "different"; """
Я сохранил снова, отредактировав второй фрагмент. На этот раз вкладка expand для второго фрагмента не будет работать, однако первый из них все еще работает. После долгих раздумий с ним, убедившись, что у меня есть правильный синтаксис, я попытался догадаться, что, может быть, потому, что я сохранил с двумя дублирующими фрагментами, которые каким-то образом перепутались с выходом cson. Затем я удалил второй фрагмент, затем сохранил его только с первым, затем дублировал первый, затем изменил его, затем он сохранил его. После всего этого оба отрывка работали нормально.
Я несколько раз использовал несколько фрагментов и никогда не сталкивался с этой проблемой до сих пор. Настолько странно, но это так.
Ответ 4
Запуск следующего фрагмента с запятой, сопровождаемый новой строкой, создавая ту же структуру, что и первая работа для меня.
'.source.php':
'var dump':
'prefix': 'vd'
'body': """
echo "<pre>";
var_dump($);
echo "</pre>";
""",
'this->db':
'prefix': 'trans'
'body': """
$this->db->trans_start();
""",
'comment block':
'prefix': 'cm'
'body': """
/****************************************
*
*
****************************************/
"""
Ответ 5
У меня была та же проблема, вот исправление:
'.source.js':
'First function':
'prefix': 'first'
'body': """
function $1() {
var overall = true;
if (overall)
{
var result = {};
result.test1 = "";
return test2(result);
}
return catched("");
} """,
'Next function':
'prefix': 'next'
'body': """
function $1(result) {
var overall = true;
if (overall)
{
result.test1 = "";
return test2(result);
}
return catched("");
} """,
'Next next function':
'prefix': 'pz'
'body': """
function $1(result) {
var overall = true;
if (overall)
{
result.test1 = "";
return test2(result);
}
return catched("");
} """
Обратите внимание, что вам нужно сделать пару вещей:
- Добавьте запятую (,) после каждого "" ".
- Начните следующее определение в той же самой строке начала prev! Я действительно не понимал, почему это так. Но.. это так.
- Используйте '.source.PROGRAM LANGUAGE': только один раз для каждого языка.
Домой это помогает :)