Sublime Text 3 のCtagsプラグインfork版公開中

プルリクに反応してくれなかった…

そんなわけで、いくつか変更した機能があるのでそれをfork版として公開しておきます。
github で公開中: naoyukik/CTags

変更内容

Fork: 0.5.0 リリース(2017-02-14)

  • .sublime-projectファイルからCTagsの設定を読み込めるように変更
  • このバージョンからmasterリポジトリをDefaultとし、タグを追加

developmentにて実装(2016-12-09)

  • Sublime Text 3 で実装された関数ジャンプ(Goto Definition)とクイックパネルでのファイルパスと同等の機能を実装
  • ctagsのオプションファイルをプロジェクトのルートフォルダから読み込めるように実装
  • Ctagファイルの自動更新に対応

上記ともに、セッティングファイルに使用フラグを追加してあるのでそれぞれ設定してからご使用ください。

たぶんST2でも使える…かな。

CTagsのプラグイン(本家): https://github.com/SublimeText/CTags

Sublime text はプロジェクトを使う。

Twitter読んでると、プラグインがうまく動かないといった話がよくある。
そもそも Sublime Text はプロジェクトを設定することを前提として作られている。
もちろんプロジェクトがなくても動くけど、設定ファイルはプロジェクトフォルダ内から探す。みたいなプログラムがプラグインではよくされている。

ちょっとした開発でもプロジェクトをまず作りましょう。

Sublime Text のプラグインのコマンドに好きなキーを割り当てる

掲題通り、プラグインのコマンドにキーを割り当ててみる。
参考として今回は諸事情で割り当てを行ったSortTabsのGithubを見てみよう。

SortTabs/sort_tabs.py at master · bizoo/SortTabs · GitHub

Sublime textのPluginは

class SortTabsByNameCommand

のようにCommandが付くClass名に対してショートカットキーを設定することが出来る。
SortTabsByNameCommandは名前の通り、タブの名前でソートするコマンド。

ではこのコマンドにキーを割り当ててみる。

{ "keys": ["ctrl+alt+s"], "command": "sort_tabs_by_name" }

と、こうなる。

他のキーマップに倣って好きなkeysを設定する。
さらにcommandを見てもらうとClass名と違うことが分かる。

SortTabsByNameCommand
sort_tabs_by_name

よく見比べてもらえれば簡単で、Commandを削除し、最初の文字以外の大文字の前にアンダースコアを入れ、文字は全部小文字にするだけ。

これでキーを押してみるとタブがいつでも名前順にソートできる。

/** 今更感のあるエントリーだなぁ。 */

Sublime Text 2にPHPのCodeSnifferを追加。

PHPをPSR規約に準拠して書こうと思い立ったのでいくつかの規約を自分で選んで準拠チェックが出来るCodeSnifferを追加した。
このプラグインは他にもいくつか機能があり、自分はPSR準拠にフォーマットしてくれる機能も設定している。
プラグインはsublime-phpcs
プラグインの詳細はこちら

プラグインのインストールはいつも通りPackage Controlなので割愛。

このプラグインはPearのPHP_CodeSnifferライブラリが必要なので下記のコマンドで導入。

pear channel-update pear.php.net
pear clear-cache
pear install PHP_CodeSniffer

※1行目と2行目は念のため。

ついでにPSR準拠のソースに自動で変換してくれるPHP Coding Standards Fixerも使う。
これはsublime-phpcsのオプションとして対応している。
使用するためにはPHP Coding Standards Fixer本体ファイルが必要なので下記から導入。
PHP Coding Standards Fixer
これを適当な場所に置く。
自分はsublime Text 2のDataPackagesUser配下に設置。

追記(2013-08-03 17:44): どうやら以前書いたものは使えなくなったみたい。
どこかのアップデート時にsettingが変わったようで、新しいものにしないと動かなくなったので気づいた。
現在はExampleとして
DataPackagesPhpcsexample-settings
にファイルが入っているのでそれを使った方が無難。

ユーザー設定は下記。参考程度にどうぞ。
設定するうえで必須なのはphp_cs_fixer_executable_path。
このパスはコマンドラインへそのまま渡すので”php “から書かないと動かないので要注意。

{
    // Execute the sniffer on file save
    "phpcs_execute_on_save": false,

    // PHP_CodeSniffer settings

    // Additional arguments you can specify into the application
    //
    // Example:
    // {
    //     "--standard": "PEAR",
    //     "-n"
    // }
    "phpcs_additional_args": {
        "--standard": "PSR2",
        "-n": ""
    },


    // Show the errors in the quick panel so you can then goto line
    "phpcs_show_quick_panel": false,

    // PHP-CS-Fixer settings

    // Fix the issues on save
    "php_cs_fixer_on_save": false,

    // Show the quick panel
    "php_cs_fixer_show_quick_panel": true,

    // Path to where you have the php-cs-fixer installed
    "php_cs_fixer_executable_path": "php "Sublime Text 2インストールパス\Data\Packages\User\php-cs-fixer.phar"",

    // Additional arguments you can specify into the application
    //
    // Example:
    // {
    //     "--level": "all"
    // }
    "php_cs_fixer_additional_args": {
        "--level": "psr2"
    },


    // PHP Linter settings

    // Are we going to run php -l over the file?
    "phpcs_linter_run": false

}

		

sublime text 2のPreferences.sublime-settingsを日本語化。

とりあえず、ざっとファイルをそのまま日本語化。
2012-09-10追記: ほぼ終わったけど、OS Xオンリー設定は未訳。すみません。

※と()はだいたい訳者注。
英語の説明を踏まえつつ、動作を説明する文章に書き換えたりしてます。
誤訳とかひどい有様だろうけどとりあえず公開しておきます。
突っ込みは随時お待ちしております。

// Sets the colors used within the text area
// テキストエリア内で使用するカラーを設定できる。
color_scheme

// Note that the font_face and font_size are overriden in the platform
// specific settings file, for example, "Preferences (Linux).sublime-settings".
// Because of this, setting them here will have no effect: you must set them
// in your User File Preferences.
// フォント名とフォントサイズはプラットフォームの特定のセッティングファイルで上書きできる。
// 例えば"Preferences (Linux).sublime-settings".(UserPreferences.sublime-settingsで問題ない?)
// それに伴い、ここに配置することは影響しない: あなたはあなたのユーザーファイルに初期設定をしなければならない
font_face
font_size

// Valid options are "no_bold", "no_italic", "no_antialias", "gray_antialias",
// "subpixel_antialias", "no_round" (OS X only) and "directwrite" (Windows only)
// 正確なオプションは "no_bold", "no_italic", "no_antialias", "gray_antialias",
// "subpixel_antialias", "no_round" (OS X のみ), "directwrite" (Windows のみ)
font_options

// Characters that are considered to separate words
// 文字列の区切り文字
word_separators

// Set to false to prevent line numbers being drawn in the gutter
// falseにすると行数を非表示にする
line_numbers

// Set to false to hide the gutter altogether
// falseにすると行数と空白を非表示にする(行数が消えるのはバグ?)
gutter

// Spacing between the gutter and the text
// 行数とテキストまでのスペースの距離
margin

// Fold buttons are the triangles shown in the gutter to fold regions of text
// 折り畳みボタンを空白部分に表示する
fold_buttons

// Hides the fold buttons unless the mouse is over the gutter
// falseにするとマウスオーバー以外でも折り畳みボタンを空白部分に表示
fade_fold_buttons

// Columns in which to display vertical rulers
// ルーラーのラインを表示する(表示したい数字を入れる)
rulers

// Set to true to turn spell checking on by default
// スペルチェックを行うかの標準設定
spell_check

// The number of spaces a tab is considered equal to
// スペースタブの数
tab_size

// Set to true to insert spaces when tab is pressed
// タブをスペースとして挿入する
translate_tabs_to_spaces

// If translate_tabs_to_spaces is true, use_tab_stops will make tab and
// backspace insert/delete up to the next tabstop
// もしtranslate_tabs_to_spacesがtrueの時、use_tab_stopsはtabとbackspaceでinsertとdelete時に次のタブの数分だけ移動する
use_tab_stops

// Set to false to disable detection of tabs vs. spaces on load
// (?)falseにするとタブとスペースをロード時に検出するのを停止(何に使用するのか分からない…)
detect_indentation

// Calculates indentation automatically when pressing enter
// Enter押下時にインデントを自動で行う
auto_indent

// Makes auto indent a little smarter, e.g., by indenting the next line
// after an if statement in C. Requires auto_indent to be enabled.
// auto_indetが有効の時のみ。
smart_indent

// Adds whitespace up to the first open bracket when indenting. Requires
// auto_indent to be enabled.
// 改行インデント時に最初の括弧の位置までスペースを追加する。
// auto_indetが有効の時のみ。
indent_to_bracket

// Trims white space added by auto_indent when moving the caret off the
// line.
// オートインデント後、キャレット移動時にその行が空行の場合、ホワイトスペースを削除する
trim_automatic_white_space

// Disables horizontal scrolling if enabled.
// May be set to true, false, or "auto", where it will be disabled for
// source code, and otherwise enabled.
// おそらくtrue,false,もしくはautoが設定でき、ソースコードではdisabledになるだろう。もしくは有効になる。
word_wrap

// Set to a value other than 0 to force wrapping at that column rather than the
// window width
// コラムの幅を0以上のvalueで設定する
wrap_width

// Set to false to prevent word wrapped lines from being indented to the same
// level
indent_subsequent_lines

// Draws text centered in the window rather than left aligned
// テキストを左端揃えにしてウィンドウに対してセンタリングする
draw_centered

// Controls auto pairing of quotes, brackets etc
// 括弧やクォートの自動補完
auto_match_enabled

// Word list to use for spell checking
// スペルチェックのためのワードリスト
dictionary

// Set to true to draw a border around the visible rectangle on the minimap.
// The color of the border will be determined by the "minimapBorder" key in
// the color scheme
// trueに設定するとミニマップ上の表示領域にボーダーを四角く表示する
// ボーダー色はカラースキーム設定ファイル内に"minimapBorder"keyで指定できる。
draw_minimap_border

// If enabled, will highlight any line with a caret
// 有効にすると、キャレット行を強調する。
highlight_line

// Valid values are "smooth", "phase", "blink", "wide" and "solid".
// 値は"smooth"(速いフェードの点滅), "phase"(遅いフェードの点滅), "blink"(点滅), "wide"(太い(点滅無)) and "solid"(細い(点滅無))
// (キャレットのスタイル設定)
caret_style

// Set to false to disable underlining the brackets surrounding the caret
// falseに設定するとキャレットが括弧の周囲に来た際に下線を表示しなくなる
match_brackets

// Set to false if you'd rather only highlight the brackets when the caret is
// next to one
// falseに設定するとキャレットの次の閉じ括弧を強調表示しなくなる
match_brackets_content

// Set to false to not highlight square brackets. This only takes effect if
// match_brackets is true
// falseを設定すると角括弧を強調表示しなくなる。match_bracketsがtrue時のエフェクト。
match_brackets_square

// Set to false to not highlight curly brackets. This only takes effect if
// match_brackets is true
// falseを設定すると波括弧を強調表示しなくなる。match_bracketsがtrue時のエフェクト。
match_brackets_braces

// Set to false to not highlight angle brackets. This only takes effect if
// match_brackets is true
// falseを設定すると山括弧を強調表示しなくなる。match_bracketsがtrue時のエフェクト。
match_brackets_angle

// Enable visualization of the matching tag in HTML and XML
// 有効ならHTMLとXMLの対応するタグを強調表示する。
match_tags

// Highlights other occurrences of the currently selected text
// 選択しているテキストの他の文字を強調する
match_selection

// Additional spacing at the top of each line, in pixels
// 行間の上をあける。ピクセル指定。
line_padding_top

// Additional spacing at the bottom of each line, in pixels
// 行間の下をあける。ピクセル指定。
line_padding_bottom

// Set to false to disable scrolling past the end of the buffer.
// On OS X, this value is overridden in the platform specific settings, so
// you'll need to place this line in your user settings to override it.
// falseを設定するとバッファーの最後以上スクロールしない
// OSXの場合、プラットフォームの設定を上書きする。
// 必要であれば、あなたの設定で上書きできるだろう。
scroll_past_end

// This controls what happens when pressing up or down when on the first
// or last line.
// On OS X, this value is overridden in the platform specific settings, so
// you'll need to place this line in your user settings to override it.
// 最初と最後の行の際にアップかダウンを押下時の設定(最初の行で上を押すと先頭に移動する)
// OSXの場合、プラットフォームの設定を上書きする。
// 必要であれば、あなたの設定で上書きできるだろう。
move_to_limit_on_up_down

// Set to "none" to turn off drawing white space, "selection" to draw only the
// white space within the selection, and "all" to draw all white space
// "none"に設定するとホワイトスペースを非表示
// "selection"に設定すると選択時のみホワイトスペースを表示
// "all"に設定すると常にホワイトスペースを表示する
draw_white_space

// Set to false to turn off the indentation guides.
// The color and width of the indent guides may be customized by editing
// the corresponding .tmTheme file, and specifying the colors "guide",
// "activeGuide" and "stackGuide"
// falseに設定するとインデントガイドを非表示にする
// インデントガイドのカラーと幅はカスタマイズに対応している。
// .tmThemeファイルの"guide"、"activeGuide"と"stackGuide"のカラーを明示している。
draw_indent_guides

// Controls how the indent guides are drawn, valid options are
// "draw_normal" and "draw_active". draw_active will draw the indent
// guides containing the caret in a different color.
// インデントガイドの表示の仕方の設定。
// オプションは"draw_normal" と "draw_active"。
// draw_activeはキャレット位置がインデントされている行を含む時に表示する。
indent_guide_options

// Set to true to removing trailing white space on save
// trueに設定すると、保存時に行末のホワイトスペースを削除する
trim_trailing_white_space_on_save

// Set to true to ensure the last line of the file ends in a newline
// character when saving
// trueに設定すると保存時にEOFを最後の行に追加する(空行を追加するっぽい)
ensure_newline_at_eof_on_save

// Set to true to automatically save files when switching to a different file
// or application
// trueに設定すると別のファイルかアプリへ変更した際にファイルを自動保存する
save_on_focus_lost

// The encoding to use when the encoding can't be determined automatically.
// ASCII, UTF-8 and UTF-16 encodings will be automatically detected.
// 自動でエンコーディングが確定できない時、このエンコーディングを使用する。
// ASCII, UTF-8 と UTF-16 エンコーディング は自動で識別されるだろう。
fallback_encoding

// Encoding used when saving new files, and files opened with an undefined
// encoding (e.g., plain ascii files). If a file is opened with a specific
// encoding (either detected or given explicitly), this setting will be
// ignored, and the file will be saved with the encoding it was opened
// with.
// 新規ファイル保存時とエンコーディングが設定されていないファイルを開く時にこのエンコーディングを使用する(例えばプレーンなテキストファイル)
// もし、特定のエンコーディング(識別できるか明示されている)のファイルならこの設定は無視される。
// そして開かれたファイルはエンコーディングを保持して保存されるだろう。
default_encoding

// Files containing null bytes are opened as hexadecimal by default
// null bytesを含むファイルは標準では16進数で開かれる
enable_hexadecimal_encoding

// Determines what character(s) are used to terminate each line in new files.
// Valid values are 'system' (whatever the OS uses), 'windows' (CRLF) and
// 'unix' (LF only).
// 新規ファイルの各行の終端記号を設定する。
// 値は'system' (ほとんどの使用OS), 'windows' (CRLF) と 'unix' (LF only).
default_line_ending

// When enabled, pressing tab will insert the best matching completion.
// When disabled, tab will only trigger snippets or insert a tab.
// Shift+tab can be used to insert an explicit tab when tab_completion is
// enabled.
// 有効の時、tab押下時にベストマッチしたコンプリートしたものを挿入する。
// 無効の時、tabはスニペットかtab挿入のみになる。
// Shift+tabはtab_completionが有効の時にtabを明示的に挿入することが出来る
tab_completion

// Enable auto complete to be triggered automatically when typing.
// 有効の時、自動コンプリートのトリガーをタイピングとして自動化する
auto_complete

// The maximum file size where auto complete will be automatically triggered.
// 自動コンプリートの自動的なトリガーの最大ファイルサイズ
auto_complete_size_limit

// The delay, in ms, before the auto complete window is shown after typing
// オートコンプリートのタイピング後のウィンドウ表示からの遅延時間。マイクロ秒で設定
auto_complete_delay

// Controls what scopes auto complete will be triggered in
// オートコンプリートのトリガーのスコープを管理
auto_complete_selector

// Additional situations to trigger auto complete
// オートコンプリートのトリガーの追加する場所
auto_complete_triggers

// By default, auto complete will commit the current completion on enter.
// This setting can be used to make it complete on tab instead.
// Completing on tab is generally a superior option, as it removes
// ambiguity between committing the completion and inserting a newline.
// 既定では、オートコンプリートはEnterを押して決定する。
// この設定ではtabを代わりに使うことが出来る。
// tabでのコンプリートは全体の上位オプションで、コンプリートと改行の二つの曖昧さを無くします。
// ※要するにtrueの場合、オートコンプリートの決定にtabキーのみ使えるようになる。Enterはコンプリートされずに改行する。
auto_complete_commit_on_tab

// Controls if auto complete is shown when snippet fields are active.
// Only relevant if auto_complete_commit_on_tab is true.
// スニペットフィールドはアクティブの時オートコンプリートが見えているならばコントロールする。
// auto_complete_commit_on_tabがtrueの時のみ適用される。
// (?)使い方が分からないです
auto_complete_with_fields

// By default, shift+tab will only unindent if the selection spans
// multiple lines. When pressing shift+tab at other times, it'll insert a
// tab character - this allows tabs to be inserted when tab_completion is
// enabled. Set this to true to make shift+tab always unindent, instead of
// inserting tabs.
// 規定では、shift+tabは複数行選択した場合、アンインデントを行う。
// そのほかのタイミングでshift+tabを押した場合、tab文字列を挿入する。- tab_completionは有効の時、タブの挿入が許可されている。
// tabを挿入する代わりに、shift+tabを常にアンインデントにするならこれをtrueに設定する。
shift_tab_unindent

// If true, the selected text will be copied into the find panel when it's
// shown.
// On OS X, this value is overridden in the platform specific settings, so
// you'll need to place this line in your user settings to override it.
// もしtrueなら、選択中テキストは検索パネルが表示された時にコピーされる。
find_selected_text

// When drag_text is enabled, clicking on selected text will begin a
// drag-drop operation
// drag_textは有効の時、選択中テキストをドラッグ&ドロップで操作できる。
drag_text

//
// User Interface Settings
//

// The theme controls the look of Sublime Text's UI (buttons, tabs, scroll bars, etc)
// Sublime TextのUI(ボタン, タブ, スクロールバー, 等)の見た目をテーマコントロールする
theme

// Set to 0 to disable smooth scrolling. Set to a value between 0 and 1 to
// scroll slower, or set to larger than 1 to scroll faster
// スムーズスクロールを無効にする時は0に設定する。
// スクロールを遅くするなら0と1の間に、スクロールを速くするなら1よりも大きく設定する。
scroll_speed

// Controls side bar animation when expanding or collapsing folders
// サイドバーのフォルダの開閉アニメーションをコントロールする
// ※trueの時にアニメーションが有効になる
tree_animation_enabled

// Makes tabs with modified files more visible
// 変更のあったファイルのタブをマーク(ハイライト)する
highlight_modified_tabs

// ※タブにクローズボタンを表示(英語の説明がなかったのを追記)
show_tab_close_buttons

// Show folders in the side bar in bold
// サイドバーのフォルダーを太文字にする
bold_folder_labels

// OS X 10.7 only: Set to true to disable Lion style full screen support.
// Sublime Text must be restarted for this to take effect.
use_simple_full_screen

// Valid values are "system", "enabled" and "disabled"
// 有効な値は"system"、"enabled"と"disabled"
// ※Windowsの場合、systemとdisabledは常にスクロールバー表示。enabledにすると、必要な時のみ表示される
overlay_scroll_bars

//
// Application Behavior Settings
//

// Exiting the application with hot_exit enabled will cause it to close
// immediately without prompting. Unsaved modifications and open files will
// be preserved and restored when next starting.
//
// Closing a window with an associated project will also close the window
// without prompting, preserving unsaved changes in the workspace file
// alongside the project.
// アプリケーションを終了時にhot_exitが有効の場合、プロンプト無しに終了する。
// 次にスタート時に保存されていない変更と開いていたファイルは元の状態のまま復元される。
//
// 関連したプロジェクトはウィンドウを閉じる時、プロンプト無しにウィンドウは終了する。
// ワークスペースファイルとプロジェクトは一緒に元の状態のまま復元される。
hot_exit

// remember_open_files makes the application start up with the last set of
// open files. Changing this to false will have no effect if hot_exit is
// true
// remember_open_filesは最後に開いていたファイルをアプリケーションのスタート時に開きます。
// もしhot_exitがtrueならばfalseへ変更しても影響は無いです。
remember_open_files

// OS X only: When files are opened from finder, or by dragging onto the
// dock icon, this controls if a new window is created or not.
open_files_in_new_window

// Set to true to close windows as soon as the last file is closed, unless
// there's a folder open within the window. This is always enabled on OS X,
// changing it here won't modify the behavior.
// trueへセットすると最後のファイルを閉じるとウィンドウも閉じる。
// (?)OS Xは常に有効になっていて変更できないだろう。
close_windows_when_empty

// Show the full path to files in the title bar.
// On OS X, this value is overridden in the platform specific settings, so
// you'll need to place this line in your user settings to override it.
// タイトルバーにファイルのフルパスを表示する
// OSXの場合、プラットフォームの設定を上書きする。
// 必要であれば、あなたの設定で上書きできるだろう。
show_full_path

// Shows the Build Results panel when building. If set to false, the Build
// Results can be shown via the Tools/Build Results menu.
// ビルド時にビルド結果パネルを表示。もしfalseに設定した場合、ビルド結果はTools→Build Resultsメニューから表示できる。
// ※falseにするとビルド時にビルド結果パネルが表示されなくなります
show_panel_on_build

// Preview file contents when clicking on a file in the side bar. Double
// clicking or editing the preview will open the file and assign it a tab.
// サイドバー上のファイルをクリックするとファイルをプレビューする。
// ダブルクリックかプレビュー上で編集を行うとファイルを開きタブにアサインする。
preview_on_click

// folder_exclude_patterns and file_exclude_patterns control which files
// are listed in folders on the side bar. These can also be set on a per-
// project basis.
// フォルダーとファイルの除外パターンはサイドバー上のフォルダーリストを管理する
// プロジェクトの基準として設定することが出来る。
folder_exclude_patterns
file_exclude_patterns

// These files will still show up in the side bar, but won't be included in
// Goto Anything or Find in Files
// これらのファイルはサイドバーに表示されるだろう。しかしファイル内のGoto AnythingかFindにはincludeしないだろう。
binary_file_patterns

// List any packages to ignore here. When removing entries from this list,
// a restart may be required if the package contains plugins.
// ここはパッケージの除外リスト。このリストからエントリーしたものは除外される。
// パッケージはプラグインを含み、再起動が必要になるだろう。
ignored_packages