2025年6月18日

Pulsar/Atom Edit Core Package Hack

Core package の上書きパッケージ

pulsar-master.zip

core packageコピー手順

packages内の該当パッケージフォルダをpulsar-masterからコピー、フォルダ名とpackage.json内のnameを変更し以下へ移動
もとから入っている方のパッケージは無効化する

C:\Users\ユーザー名\.atom\packages

autocomplete-html-custom/completions.json

・基本id以外全部消す
・classを追加

autocomplete-css-custom/completions.json

・html の"tag"順番入れ替
・attributesの各候補順番入れ替えと候補の追加

autocomplete-css-custom/lib/provider.js

Pulsar ではhtml,phpファイル内でcssの補完が効かないための対策 13行目ピンクを追加
  selector: '.source.css, .source.sass, .source.css.postcss, .text.html.php',
Pulsar v1.128.0:phpファイル内、CSSで候補が表示されないことがあるバグあり(同じスコープ箇所でも起きるのでどういう条件で表示されないか不明)、Atomではそのバグなし

補完候補スニペット上書き

緑矢印で表示される補完候補はlanguage-系コアパッケージで制御されている。ユーザーのsnippets.csonに記述することで上書きするこができる
  • language-css,language-htmlはコピーしただけではエラーが出る。Node.jsコマンドでtree-sitterをパッケージディレクトリにインストールする必要がある
  • language-cssを無効化するとphpフィアル内でcssの色分け、補完が効かなくなる
そのためlanguage-系はコピーせずsnippets.csonに記述しcore packageのスニペットを上書きする

C:\Users\ユーザー名\.atom\snippets.cson

※もとコードは各パッケージのsnippets内のファイル参照
※候補表示順はprefixのABC順のため順番を入れ替えても候補順番に反映はされない
※コード内のインデントがずれると効かなくなる

language-css/snippets/language-css.csonからのコード改造

# css file
'.source.css':
  '@media PC 768':
    'prefix': 'media'
    'body': '@media screen and (min-width: 768px){\n\t${1:$2}\n }$0'
  '@media SP 767':
    'prefix': 'media 767'
    'body': '@media screen and (max-width: 767px){\n\t${1:$2}\n }$0'
    
# for Pulsar delete three lines below
'.source.css .meta.property-list.css': # css file inside {} for Atom
  '@media SP 767': # for Atom
    'prefix': 'media 767' # for Atom
  'clamp':
    'prefix': 'clamp'
    'body': 'clamp(${1:0}$2,0,0);$0'
  'min':
    'prefix': 'min'
    'body': 'min(${1:0}$2,0);$0'
  'calc':
    'prefix': 'calc'
    'body': 'calc(${1:0}$2 + 0);$0'
  'scale':
    'prefix': 'scale'
    'body': 'scale(${1:0}$2);$0'
  'url':
    'prefix': 'url'
    'body': 'url(images/${1:$2}) no-repeat;$0'
  'rgba':
    'prefix': 'rgba'
    'body': 'rgba(${1:0}$2,0,0,.5);$0'
#  'linear-gradient':
#    'prefix': 'gradient'
#    'body': 'linear-gradient(transparent ${1:50%}$2, #f00 50%);$0'
 
#css file inside {} only for Pulsar
'.source.css .meta.block.inside-selector.css':
  '@media SP 767':
    'prefix': 'media 767'
  '!important':
    'prefix': '!'
  '@charset':
    'prefix': 'charset'
  '@font-face':
    'prefix': 'fontface'
  '@import':
    'prefix': 'import'
  '@keyframes':
    'prefix': 'keyframes'
  '@media':
    'prefix': 'media'
  '@supports':
    'prefix': 'supports'
    

language-html/snippets/language-html.csonからのコード改造

特定のスニペットを候補から非表示にする場合は'body'の行を削除
# html file
'.text.html':
  # B
  'Blockquote':
    'prefix': 'blockquote'
    'body': '<blockquote>\n\t$1\n</blockquote>'
  # C
  'Canvas':
    'prefix': 'canvas'
  'Caption':
    'prefix': 'caption'
  'Citation':
    'prefix': 'cite'
  'Code':
    'prefix': 'code'
  'Column':
    'prefix': 'col'
  'Column Group':
    'prefix': 'colgroup'
  'Comment':
    'prefix': '--'
  # D
  'HTML — 5':
    'prefix': 'doctype'
  'Data':
    'prefix': 'data'
  'Data List':
    'prefix': 'datalist'
  'Deleted Text':
    'prefix': 'del'
  'Details':
    'prefix': 'details'
  'Definition':
    'prefix': 'dfn'
  # U
  'Unordered List':
    'prefix': 'ul'
    'body': '<ul>\n\t<li>$1</li>\n</ul>'
    
#html file inside html tag end
'.text.html.basic .source.html .punctuation.definition.tag.end': # for Atom
'.text.html.basic .punctuation.definition.tag.end': # for Pulsar
  'Strikethrough':
    'prefix': 's'
  'Sample Output':
    'prefix': 'samp'
  'Script':
    'prefix': 'script'
  'Script With External Source':
    'prefix': 'scriptsrc'
  'Section':
    'prefix': 'section'
  'Select':
    'prefix': 'select'
  'Small':
    'prefix': 'small'
  'Source':
    'prefix': 'source'
  'Span':
    'prefix': 'span'
  'Strong':
    'prefix': 'strong'
  'Style':
    'prefix': 'style'
  'Subscript':
    'prefix': 'sub'
  'Summary':
    'prefix': 'summary'
  'Superscript':
    'prefix': 'sup'
  'SVG':
    'prefix': 'svg'
  # I
  'Italic':
    'prefix': 'i'
  'Inline Frame':
    'prefix': 'iframe'
  'Input':
    'prefix': 'input'
  'Image':
    'prefix': 'img'
  'Import':
    'prefix': 'import'
  'Inserted Text':
    'prefix': 'ins'
  # T
  'Table':
    'prefix': 'table'
  'Table Body':
    'prefix': 'tbody'
  'Table Cell':
    'prefix': 'td'
  'Template':
    'prefix': 'template'
  'Text Area':
    'prefix': 'textarea'
  'Table Foot':
    'prefix': 'tfoot'
  'Table Header Cell':
    'prefix': 'th'
  'Table Head':
    'prefix': 'thead'
  'Time':
    'prefix': 'time'
  'Title':
    'prefix': 'title'
  'Table Row':
    'prefix': 'tr'
  'Track':
    'prefix': 'track'
    

language-php/snippets/language-php.csonからのコード改造

t入力時余計な補完削除のためのコードと ショートechoが<?で効かないため書き換え
#php file
'.text.html.php:not(.source)':
  '$this->…':
    'prefix': 'this'
  'echo $this->…':
    'prefix': 'ethis'
  '<?php foreach (…) … <?php endforeach ?>':
    'prefix': 'foreach'
    
#php file inside css
'.text.html.php .meta.tag.style.html .source.css.embedded.html':
  '<?php … ?>':
    'prefix': 'php'
    
'.text.html.php':
  '<?= ?>':
    'prefix': 'echo corto'
    'body': '<?= $0 ?>'
※language-phpはコピーしてもエラーなく有効化できるがコピーせずlanguage-css,language-html同様snippets.csonに上書き記述にする

スニペットセレクタの探し方

atomとpulsarでスニペットセレクタ名が違う箇所がるため効かない場合は調べる
スニペットセレクタの探し方
カーソルを事前に検知したい場所に置いておく Ctrl + Shift + P

Editor:Log Cursor Scope

右上青枠内に表示される

記述例

指定する時は必ずはじめにドット.をつける
.source.css .meta.block.inside-selector.css'
Wish I could be Comic Sans ついにマイコンピューターでインターネットを始めたの
わたしはヨガマットデザイナー

fzfeed