カラクリスタ

「輝かしい青春」なんて失かった人のブログ

今日行なった作業 (2017-11-08)

とりあえず雑多に。

1. msys2 での環境を再構築した

僕の場合、本格的に Linux 環境が必要になる場合には NixOS on Hyper-V を使ってるんですが、 なんちゃって UNIX-like 環境で十分な場合だったり、あるいは、GVim (+kaoriya) で必要になるコマンドラインツールを揃える、という目的で、今日、MSYS2 の環境を真面目に構築していたりしました。

それで、一応 Shell 環境としては、

  • zsh + tmux + mintty

と言う組み合わせなんですが、mintty は最新の Version を使う様に時前ビルドをしていて、 かつ、tmuxwcwidith-cjkwcwidth.ctmuxutf8.c に丸っと移植する、 っという荒技とか使って、Ambiguous Width と NERDFont の Private Area の Symbols が 2 で表示される環境を作ってます。

なお、一応僕が使ってる PKGBUILD の定義を貼っておくと、大体こんな感じ:

# Maintainer: Alexey Pavlov <alexpux@gmail.com>

pkgname=tmux-git
pkgver=2.6.64.g6f3b6c8d
pkgrel=1
pkgdesc='A terminal multiplexer'
url='https://tmux.github.io/'
arch=('i686' 'x86_64')
license=('BSD')
provides=('tmux')
conflicts=('tmux')
depends=('ncurses' 'libevent' 'wcwidth-cjk')
makedepends=('git' 'ncurses-devel' 'libevent-devel')
source=("${pkgname}"::'git+https://github.com/tmux/tmux.git'
https://raw.githubusercontent.com/Alexpux/MSYS2-packages/master/tmux-git/msys-platform.patch
https://raw.githubusercontent.com/Alexpux/MSYS2-packages/master/tmux-git/no-check-dirs-permission.patch
https://gist.githubusercontent.com/waltarix/1399751/raw/4db15139bcbf2d36993ef700b43a69eb0392aaf2/tmux-do-not-combine-utf8.patch
https://gist.githubusercontent.com/waltarix/1399751/raw/4db15139bcbf2d36993ef700b43a69eb0392aaf2/tmux-pane-border-ascii.patch
https://raw.githubusercontent.com/fumiyas/wcwidth-cjk/master/wcwidth.c
)
sha256sums=('SKIP'
'cf7e0f642d43fc97f7c55be41c693cceab5c891f81fcee687e918075e55cd533'
'8f1938c9bcb99fba5441e11379a193c17eee582a03c04f1bde8089d58a84f44f'
'55476ee1a324abf796b4595d92ed64af06b030143d3663b2e5dfd7865319f264'
'9256114cd818e7070d27e44a725f28169ae1264587a65fd49f0c8f51233423e2'
'9cb413f922779f63d2bc81c125a7c299ec186575c98bc8d971b15f44e5ebfed1')

pkgver() {
cd "${srcdir}"/$pkgname
git describe --tags | sed -e 's|-|.|g' -e 's|v||g'
}

prepare() {
cd "${srcdir}"/$pkgname
patch -p1 -i "${srcdir}"/msys-platform.patch
patch -p0 -i "${srcdir}"/no-check-dirs-permission.patch
patch -p1 -i "${srcdir}"/tmux-do-not-combine-utf8.patch
patch -p1 -i "${srcdir}"/tmux-pane-border-ascii.patch
cp osdep-cygwin.c osdep-msys.c

mv utf8.c utf8.c.orig
cat "${srcdir}"/wcwidth.c >utf8.c
cat utf8.c.orig          >>utf8.c
rm utf8.c.orig

msg2 "Running autogen.sh"
./autogen.sh
}

build() {
cd "${srcdir}"/$pkgname

./configure \
--disable-dependency-tracking \
--build=x86_64-pc-msys \
--prefix=/usr \
--sysconfdir=/etc \
--localstatedir=/var \
CPPFLAGS="${CPPFLAGS} -I/usr/include/ncursesw -U_XOPEN_SOURCE" \
LDFLAGS="${LDFLAGS} -lwcwidth-cjk"

make
}

package() {
cd "${srcdir}"/$pkgname
make DESTDIR="${pkgdir}" install

install -d "${pkgdir}"/usr/share/licenses/tmux
install -m 644 COPYING "${pkgdir}"/usr/share/licenses/tmux

#install -d "${pkgdir}"/usr/share/tmux
#install -m 644 examples/* "${pkgdir}"/usr/share/tmux
#install -d "${pkgdir}"/usr/share/vim/vimfiles/syntax
#install -m 644 examples/tmux.vim "${pkgdir}"/usr/share/vim/vimfiles/syntax

#install -d "${pkgdir}"/usr/share/bash-completion/completions/tmux
#mv "${pkgdir}"/usr/share/tmux/bash_completion_tmux.sh "${pkgdir}"/usr/share/bash-completion/completions/tmux
}

あと、これはライセンス的には MSYS2 のモノを継承するんで、再利用を考えている方は そっちを参照 してください。

上記の MSYS2 の環境を整備したコトと関連して、僕が普段使っている Monospace Font の MyricaM M に、 NERFFont の Glyph を表示するために Fontlink しているフォントを、

  • Symbols-1000-em Nerd Font Complete.ttf

に変更したりもしていました。

それで、この Symbols-1000-em Nerd Font Complete.ttf ってなんじゃい? と言うと、これは、

NERDFont の Unicode Private Area に入ってる Symbol Fonts のみのフォント

で、 NERDFont のリポジトリのこの辺り から見付けてきて使っています。

まぁ、最初は Inconsolata Nerd Font を ttf に変換して無理矢理使っていたのですが、 mintty で Glyph が欠けて見た目がキモいことになるのを修正しようと試行錯誤して散々失敗した末に、

あ、NERDFont の Private area だけのフォントあるじゃん……

となったのは、ここだけの話です。はい。

3. blogsync + pt (the platinum searcher) とか使ってブログ記事の修正をしていた (WIP)

そして、これが本来の本題……と言うか、 MSYS2 の環境を整えていた理由の一つなんですが、 僕のこのブログ (カラクリサイクルの事です) 、あっちこっち引っ越したり、あるいは、 大量にあった他のブログを Merge したりして、結構過去の記事が壊れてたりするんで、 その辺りの修正を、blogsyncpt (the platinum searcher) とか色々使って修正していました。

それで、作業の流れとしては、

  1. blogsyncはてなブログから記事の Markdown を pull
  2. blogsync pull が終わったら、一度 Git repository に commit
  3. pt を使って問題のありそうな記事を検索する
  4. pt での検索条件が定まったら shell のコマンド繋ぎで一括置換する
  5. git status -s | cut -d' ' -f3 とかを繋いで一括で blogsync push
  6. 最終的に処理が終ったら変更を git commit

と言う感じでやってました。

なお、blogsyncpt と言うコマンドは、

という辺りのコマンドですね。はい

以上

と言うコトで、今日はそんな感じの事をしていました、と言う話でした。はい。

日記 - #MSYS2 #Windows_10_Pro - #2017-11 #2017-11-08