SublimeText2で全角文字をハイライトする
SublimeText2で全角文字(特にスペース)をハイライトする
参考サイトでは、パターンにマッチしている部分をアウトライン(枠で囲う)する だけだったので、ちょっと改造して、ハイライトもできるようにした。
手順
基本的には参考サイトの通り
#!/usr/bin/python # -*- coding: utf8 -*- import sublime import sublime_plugin class AlwaysHihghlight(sublime_plugin.EventListener): # highlight def highlight(self, view): pattern = view.settings().get('alwayshighlight_pattern') if pattern: view.add_regions('AlwaysHighlight_Highlight',view.find_all(pattern), "invalid", sublime.DRAW_EMPTY) def outline(self, view): pattern = view.settings().get('alwayshighlight_outline_pattern') if pattern: view.add_regions('AlwaysHighlight_Outline',view.find_all(pattern), "invalid", sublime.DRAW_OUTLINED) def update(self,view): if view.settings().get('enable_alwayshighlight') == True: self.highlight(view) self.outline(view) else: view.erase_regions('highlight') # Called after changes have been made to a view. # @override def on_modified(self, view): self.update(view) # Called when a view gains input focus. # @override def on_activated(self, view): self.update(view) # Called when the file is finished loading. # @override def on_load(self, view): self.update(view)
- 個人用の設定に、以下の設定を放り込む
(Cmd+, で個人用の設定を開く)
// パッケージの有効化 "enable_alwayshighlight": true, // ハイライトしたい文字パターンを設定 "alwayshighlight_pattern": "[{}「」¥=”’+@:;・_ー 0-9A-Za-z]", // アウトラインしたい文字パターンを設定 "alwayshighlight_outline_pattern": "[\n\t\r\n]",
参考サイト:http://qiita.com/WelinaNana/items/47742a4fee048f5156ab
SublimeText2で 言語ごとの設定をする(tabsizeとか)
設定したい言語のファイルを開いた状態で、↓を選択する。 Preferences -> Settings - More -> Syntax Specific - User
言語ごとの設定ファイルが開く(例:railsなら、 Ruby on Rails.sublime-settings) ので、好みの設定を入れる
{ "tab_size": 2, "translate_tabs_to_spaces": true }
参考サイト: http://mlo.io/blog/2012/08/23/language-specific-indents-sublime.html
UIViewのサブクラスをxibからロードする
こちらのサイトの記事が非常に参考になった。
http://blogios.stack3.net/archives/195
- xibファイルを作成する
- 必要なパーツをxibに追加する
- .h .m ファイルを作成する
- xibと紐づくメンバ変数を作成する(IBOutlet)
- インスタンス作成用のクラスメソッドを作る
- nibが読み込まれた後の処理を作成する
- xibとクラスをひもづける
- xibのCustomViewの部分にクラス名を入れる
- xibとメンバ変数をひもづける(※File's ownerから紐付けてはいけないことに注意)
NSDate(日付の生成・比較)
NSDateでいつも調べていることをまとめておく
日付の生成
NSDate *now = [NSDate date]; // 現在時刻を設定 NSDate *date = [NSDate dateWithString:@"2013-12-19 20:30:00 +0900"]; // 文字列で時間を設定 // フォーマットが間違っているとnilが返ってくる、日付のデリミタは"-"のみ。
日付の比較
NSDate *earlierDate = [date1 earlierDate:date2]; // 早い日付が返ってくる (date2にnilが渡された時は、date1が返る) NSDate *laterDate = [date1 laterDate:date2]; // 遅い日付が返ってくる BOOL isEqual = [date1 isEqualToDate:date2]; // Date1とDate2が同じ日付(タイムゾーン含む)の場合YES NSComparisonResult result = [date1 compare:date2] // date1とdate2が同じ日付の場合 NSOrderedSameが返る // date1の方が未来の場合 NSOrderedDescendingが返る // date1の方が過去の場合 NSOrderedAscendingが返る
※ compare:メソッドは、date2にnilが渡された時にNSOrderdSameが返るので、そこは注意する。
Xcodeプラグイン
以前入れたコードフォーマッタを動かしていなかったので、 使い方を再度調べるついでに、Xcodeにプラグインを入れた
Xcode 5.0 以降で使えるプラグインは、まだそんなに多くない模様? 参考 http://maniacdev.com/xcode-plugins
Alcatraz
サイト
https://github.com/mneorr/Alcatraz
インストール
↓のコマンドをターミナルで叩いて、Xcodeを再起動しろとあるが、何故か動かないので、 レポジトリをクローンしてきて、プロジェクトファイルを開き、ビルドする。
mkdir -p ~/Library/Application\ Support/Developer/Shared/Xcode/Plug-ins; curl -L http://goo.gl/xfmmt | tar xv -C ~/Library/Application\ Support/Developer/Shared/Xcode/Plug-ins -
BBUncrustifyPlugin-Xcode
コードフォーマッタ
サイト
https://github.com/benoitsan/BBUncrustifyPlugin-Xcode
使い方
選択したファイルのフォーマッティング
Edit → Uncrustify Selected Files
エディタで開いているファイルのフォーマッティング
Edit → Uncrustify Active File
選択した行のフォーマッティング
Edit → Uncrustify Selected Lines
コードフォーマットの設定
ホームディレクトリに設定ファイルを置いておく(↓のどれでもOK) * ~/.uncrustifyconfig * ~/uncrustify.cfg * ~/.uncrustify/uncrustify.cfg
FuzzyAutocomplete
補完をファジーにしてくれる。 例えば、dispatch_get_main_queue()なら、dmqと打つだけで、補完候補に↓の2つだけ出てくれる * dispatch_get_main_queue() * _dispatch_main_q
サイト
https://github.com/chendo/FuzzyAutocompletePlugin.git
インストール
どっちか * Alcatraz * githubからクローンしてビルド
使い方
入れるだけ
XAlign
コードの整形をしてくれるツール
サイト
https://github.com/qfish/XAlign
インストール
- プラグインを直接ダウンロード http://github.so/XAlign/build/XAlign.tar.gz
- 放り込む~/Library/Application Support/Developer/Shared/Xcode/Plug-ins/
使い方
- Xcode → Edit → XAlign
- デフォルトの整列コマンド
Shift + Cmd + X
デフォルトだとやりにくいのでCtrl + S
に変更した。Xcode →Edit → XAlign → Setting
ナビゲーションでの戻るボタンによるアプリのクラッシュ
iOS7になってから、UINavigationControllerを使用したアプリケーションで、 画面遷移中に戻るボタンを押すと、UIが更新されない問題が発生した。 (画面遷移中に左上を連打していると簡単に再現される。)
原因は、おそらくだがiOS7になってから、 ナビゲーションバーのボタンなどもスライドインのアニメーションがつき、 アニメーション中に戻るボタンが押せてしまうからなのではないかと思われる。
とりあえず、viewWillAppear:でボタンを使用不能にし、 viewDidAppear:でボタンを使用可能にした。
- (void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; // 戻るボタンを無効化する UIView *tmpBackView = [[UIView alloc] initWithFrame:CGRectZero]; [tmpBackView setBackgroundColor:[UIColor clearColor]]; UIBarButtonItem *tmpBackButton = [[UIBarButtonItem alloc] initWIthCustomView:tmpBackView]; [tmpBackButton setEnabled:NO]; [self.navigationItem setLeftBarButtonItem:tmpBackButton]; } - (void)viewDidAppear:(BOOL)animated { [super viewDidAppear:animated]; [UIView animateWithDuration:0.3f animations:^{ [self.navigationItem setLeftBarButtonItem:nil]; }]; }
戻るボタンが瞬間的に現れるのもどうかと思ったので、viewDidAppear:では、 アニメーション付きで戻している。
また、この方法を使用すると、leftBarButtonItemをカスタムしている場合に、 そいつを戻るボタンに変更してしまうので、 メンバ変数にtmpBackButtonを放り込んで置いて、判定をかけるとかしているのだが、 他に良い方法があったりするだろうか?
Xcodeでのドキュメント
VVDocumenter-Xcodeが使いやすそう。
https://github.com/onevcat/VVDocumenter-Xcode
JavaDocのスタイルでコメントのテンプレを作成してくれるので、 Doxygenも使えるし。
インストールも簡単だった ・githubからダウンロード ・.projを開く ・ビルド