ポエムです。
TL;DR
背景
バイト先で社内勉強会に参加していたところ、突然Swift部が発足しました。
軽くググったところLinuxでもSwiftが動くことがわかったので、Swift部に参加することにしました。
環境
Swift のインストール
Arch LinuxにSwiftをインストールする - Qiita
最初にこの記事を参考にインストールしました。
しかし、Foundation
(Obj-Cの標準ライブラリ?)や、後述するswift-ide-test
が必要になったため、swift
パッケージからビルドすることにしました。
Foundation
などを入れるには_experimental
フラグを立てる必要がありそうだったので、PKGBUILDを編集して、_experimental
を1に変更しました。
また、ビルドがコケるようになってしまったため、以下のようなパッチをあててビルドを通しました。テストがコケてた?
diff --git a/src/swift-corelibs-xctest/Sources/XCTest/XCTAssert.swift.orig b/src/swift-corelibs-xctest/Sources/XCTest/XCTAssert.swift index fc2d099..4e93cd8 100644 --- a/src/swift-corelibs-xctest/Sources/XCTest/XCTAssert.swift.orig +++ b/src/swift-corelibs-xctest/Sources/XCTest/XCTAssert.swift @@ -205,7 +205,7 @@ public func XCTAssertLessThanOrEqual<T : Comparable>(@autoclosure expression1: ( public func XCTAssertNil(@autoclosure expression: () -> Any?, @autoclosure _ message: () -> String = "", file: StaticString = __FILE__, line: UInt = __LINE__) { let value = expression() - _XCTAssert(value == nil, assertion: value == nil ? .Nil(()) : .Nil(value!), message, file: file, line: line) + /* _XCTAssert(value == nil, assertion: value == nil ? .Nil(()) : .Nil(value!), message, file: file, line: line) */ } public func XCTAssertNotEqual<T : Equatable>(@autoclosure expression1: () -> T?, @autoclosure _ expression2: () -> T?, @autoclosure _ message: () -> String = "", file: StaticString = __FILE__, line: UInt = __LINE__) {
コマンドラインツールを作った
Swift に慣れるための一歩として、コマンドラインツールを一つ作りました。
Markdown からheaderを抽出して、目次を生成するツールです。
ちゃんとheaderに対応するアンカーもつけてくれます。
例えば、lemonade のREADMEで試してみると、こんな感じになります。
$ md-toc < lemonade/README.md - [Lemonade](#lemonade) - [Installation](#installation) - [Example of use](#example-of-use) - [Usage](#usage) - [On server (in the above, Windows)](#on-server-in-the-above-windows) - [Client (in the above, Linux)](#client-in-the-above-linux) - [Configuration](#configuration) - [Server](#server) - [Client](#client) - [Advanced Usage](#advanced-usage) - [trans-loopback](#trans-loopback) - [trans-localfile](#trans-localfile) - [line-ending](#line-ending) - [Alias](#alias) - [Links](#links)
Linux上のVimでSwiftのオムニ補完出来るようにした
- keith/sourcekitten.vim: An experimental swift highlighting plugin for vim
- landaire/deoplete-swift: Swift completions in Vim using deoplete
OS X ではSourceKittenというツールのフロントプラグインが使えるようなのですが、Linuxでは難しい?無理?なようです。
ググっていたところ、swift-ide-testというツールを使用して、LinuxでSwiftの補完を行っている例が見つかりました。
と言うことで、これを使用してオムニ補完を行うVimプラグインを作ってみました。
まだかなり荒削りですが、ないよりかなりマシ。
まとめ
多分Mac使うべきなんだと思う。