All Projects → z80oolong → tmux-eaw-fix

z80oolong / tmux-eaw-fix

Licence: other
tmux 2.6 以降において East Asian Ambiguous Character を全角文字の幅で表示する

Projects that are alternatives of or similar to tmux-eaw-fix

Hdiffpatch
a C\C++ library and command-line tools for Diff & Patch between binary files or directories(folder); cross-platform; run fast; create small delta/differential; support large files and limit memory requires when diff & patch.
Stars: ✭ 459 (+2768.75%)
Mutual labels:  diff, patch
Apkdiffpatch
a C++ library and command-line tools for Zip(Jar,Apk) file Diff & Patch; create minimal delta/differential; support Jar sign(apk v1 sign) & apk v2,v3 sign .
Stars: ✭ 121 (+656.25%)
Mutual labels:  diff, patch
Patch Package
Fix broken node modules instantly 🏃🏽‍♀️💨
Stars: ✭ 6,062 (+37787.5%)
Mutual labels:  diff, patch
Gojsondiff
Go JSON Diff
Stars: ✭ 371 (+2218.75%)
Mutual labels:  diff, patch
dipa
dipa makes it easy to efficiently delta encode large Rust data structures.
Stars: ✭ 243 (+1418.75%)
Mutual labels:  diff, patch
Similar
A high level diffing library for rust based on diffs
Stars: ✭ 386 (+2312.5%)
Mutual labels:  diff, patch
Python Patch
Library to parse and apply unified diffs
Stars: ✭ 65 (+306.25%)
Mutual labels:  diff, patch
Diffson
A scala diff/patch library for Json
Stars: ✭ 258 (+1512.5%)
Mutual labels:  diff, patch
intellij-diff-plugin
Syntax highlighting for .diff files and .patch files in IntelliJ IDEs
Stars: ✭ 17 (+6.25%)
Mutual labels:  diff, patch
diffy
Tools for finding and manipulating differences between files
Stars: ✭ 47 (+193.75%)
Mutual labels:  diff, patch
Jsondiffpatch
Diff & patch JavaScript objects
Stars: ✭ 3,951 (+24593.75%)
Mutual labels:  diff, patch
deltaq
Fast and portable delta encoding for .NET in 100% safe, managed code.
Stars: ✭ 26 (+62.5%)
Mutual labels:  diff, patch
Gsync
gSync is an rsync based library for sending delta updates of files to a remote server.
Stars: ✭ 344 (+2050%)
Mutual labels:  diff, patch
Diff Match Patch
Diff Match Patch is a high-performance library in multiple languages that manipulates plain text.
Stars: ✭ 4,910 (+30587.5%)
Mutual labels:  diff, patch
Editscript
A library designed to diff and patch Clojure data structures
Stars: ✭ 281 (+1656.25%)
Mutual labels:  diff, patch
Git Follow
Follow lifetime changes of a pathspec in Git.
Stars: ✭ 25 (+56.25%)
Mutual labels:  diff, patch
Ex audit
Ecto auditing library that transparently tracks changes and can revert them.
Stars: ✭ 214 (+1237.5%)
Mutual labels:  diff, patch
duff
Pure OCaml implementation of libXdiff (Rabin's fingerprint)
Stars: ✭ 20 (+25%)
Mutual labels:  diff, patch
go-gitdiff
Go library for parsing and applying patches created by Git
Stars: ✭ 41 (+156.25%)
Mutual labels:  diff, patch
dotfiles
❤ ~/.🛠🐈 the daily jam 🍞🥜🍇🍞
Stars: ✭ 55 (+243.75%)
Mutual labels:  tmux

tmux 2.5 以降において East Asian Ambiguous Character を全角文字の幅で表示する

概要

tmux 2.5 以降において、 Unicode の規格における東アジア圏の各種文字のうち、いわゆる "◎" や "★" 等の記号文字及び罫線文字等、 East_Asian_Width 特性の値が A (Ambiguous) となる文字 (以下、 East Asian Ambiguous Character) が、日本語環境で文字幅を適切に扱うことが出来ずに表示が乱れる問題が発生しています。

ファイル tmux-x.y-fix.diff (ここに、 x.y は tmux の安定版のバージョン番号。以下同様) 及び tmux-HEAD-xxxxxxxxx-fix.diff (ここに、 xxxxxxxx は tmux の HEAD 版の最新の commit ID 番号。以下同様) は、 tmux 2.5 以降において East Asian Ambiguous Character の幅を漢字や全角カナ文字等と同じ幅 2 で表示するように修正するための差分ファイルです。

なお、この差分には、 koie-hidetaka 氏によって作成された tmux画面分割におけるボーダーラインの罫線文字を判別し、適切に描画するためのソースコードの修正が含まれています。

差分ファイルの適用とインストール

tmux のソースコードに差分ファイルを適用するには、安定版の tmux には、差分ファイル tmux-x.y-fix.diff を、 github 上の tmux の HEAD のソースコードには、 tmux-HEAD-xxxxxxxx-fix.diff をそれぞれ適用して下さい。

従って、安定版の tmux のソースコードにおける差分ファイルについては、 tmux のソースコードが置かれているディレクトリより、以下のようにして差分ファイル tmux-x.y-fix.diff を適用後、tmux をコマンド ./configure, make を用いてビルド及びインストールすると、 tmux において、 East Asian Ambiguous Character が全角文字の幅と同じ幅で表示されるようになります。

 $ patch -p1 < /path/to/diff/tmux-x.y-fix.diff
 (ここに、/path/to/diff は、 tmux-x.y-fix.diff が置かれたディレクトリのパス名)
 $ ./configure --prefix=/path/to/install ...
 (ここに、 /path/to/install は tmux のインストール先。なお、 ./configure の引数は適宜追加すること。)
 $ make
 $ make install

また、github 上の tmux の HEAD のソースコードにおける差分ファイルについても、 github 上の tmux の HEAD のソースコードが置かれているディレクトリより、以下のようにして、最近の差分ファイルを適用後、 tmux の HEAD 版をコマンド ./configure, make を用いてビルド及びインストールすると、 tmux において、 East Asian Ambiguous Character が全角文字の幅と同じ幅で表示されるようになります。

なお、 tmux の HEAD 版でのビルドの場合、コマンド ./configure の実行に先立ち、シェルスクリプト ./autogen.sh を実行して ./configure を生成する必要があることに留意する必要があります。

 $ patch -p1 < /path/to/diff/tmux-HEAD-xxxxxxxx-fix.diff
 (ここに、 /path/to/diff は、 tmux-HEAD-xxxxxxxx-fix.diff が置かれたディレクトリのパス名)
 $ sh ./autogen.sh
 $ ./configure --prefix=/path/to/install ...
 (ここに、 /path/to/install は tmux のインストール先。なお、 ./configure の引数は適宜追加すること。)
 $ make
 $ make install

Linuxbrew を用いた差分ファイルの適用とインストール

Linuxbrew を導入した端末において、East Asian Ambiguous Character 対応の差分ファイルを適用した tmux をインストールする際には、これらの差分ファイルを適用した tmux を導入するための Linuxbrew 向け Tap リポジトリ z80oolong/tmux を使用することを強く御勧め致します。

Tap リポジトリ z80oolong/tmux では、最新の安定版の tmux 及び github 上の最新の tmux の HEAD のインストールの他、旧安定版の tmux のインストールも可能です。

z80oolong/tmux の詳細な使用法につきましては、 z80oolong/tmux の README.md を御覧下さい。

AppImage パッケージを用いたインストール

tmux のソースコードへの East Asian Ambiguous Character 対応の差分ファイルの適用及びソースコードのビルドによるインストールが困難な環境及び状況の方に向けて、East Asian Ambiguous Character 対応の差分ファイルを適用したソースコードからのビルド済みの tmux の AppImage パッケージを用意しました。ソースコードからのビルド作業がお手数な方は、 tmux の AppImage パッケージの使用を強く御勧めします。

tmux の AppImage パッケージは、以下の URL にて配布されています。詳細な使用法についても、以下の URL を御覧下さい。

各種設定について

本節では、本差分ファイルを適用後に拡張される tmux のオプション及び tmux が参照する環境変数について述べます。

utf8-cjk

East Asian Ambiguous Character の文字幅を 2 とすることを有効化するかどうかを設定するオプションです。

このオプションの設定値を on とすると、 East Asian Ambiguous Character の文字幅が 2 となり、 off とすると、文字幅が 1 となります。例えば、East Asian Ambiguous Character を全角文字として表示する場合は、 tmux の設定ファイル .tmux.conf に以下の設定を追記します。

set-option -g utf8-cjk on

なお、オプション utf8-cjk の初期値は、 locale に関する環境変数 LC_CTYPE の値が "ja*", "ko*", "zh*" の場合は on となり、それ以外の場合は off となります。

utf8-emoji

UTF-8 で定義される絵文字の文字幅を 2 とすることを有効化するかどうかを設定するオプションです。

このオプションの設定値を on とすると、 UTF-8 で定義される絵文字の文字幅が 2 となり、 off とすると、文字幅が 1 となります。例えば、 UTF-8 で定義される絵文字のを全角文字として表示する場合は、 tmux の設定ファイル .tmux.conf に以下の設定を追記します。

set-option -g utf8-emoji on

なお、オプション utf8-emoji の初期値は、 locale に関する環境変数 LC_CTYPE の値が "ja*", "ko*", "zh*" の場合は on となり、それ以外の場合は off となります。

pane-border-ascii

tmux において画面分割を行う場合に罫線文字に ascii 文字を使用するためのオプションです。

通常は tmux での画面分割において使用する罫線文字は、環境に応じて UTF-8 の罫線文字か、端末が対応している ACS か、若しくは ascii 文字が使用されます。

このオプションを on に指定すると、 tmux での画面分割において使用する罫線文字に ascii 文字を使用します。

pane-border-acs

tmux において画面分割を行う場合に罫線の描画に ACS を使用するためのオプションです。

このオプションを on に指定すると、 tmux での画面分割において罫線の描画に ACS を使用します。

なお、このオプションと pane-border-ascii の両方を on に指定した場合は、 pane-border-acs が有効となることに留意する必要があります。

環境変数 TMUX_ACS

環境変数 TMUX_ACS に以下の値を設定すると、tmux での画面分割において以下のように罫線の描画を行います。

  • utf8, utf-8 … 罫線の文字に UTF-8 の罫線文字を使用します。
  • acs … 罫線の描画に ACS を使用します。
  • ascii … 罫線の文字に ascii 文字を使用します。

なお、環境変数 TMUX_ACS による設定は、オプション pane-border-ascii, pane-border-acs の設定に優先する事に留意する必要があります。

環境変数 TMUX_CONF

tmux 2.6-3.0a までにおいては、環境変数 TMUX_CONF の値には、 System-wide で使用する tmux の設定ファイル tmux.conf の絶対パスを指定します。

また、 tmux 3.1 以降においては、環境変数 TMUX_CONF の値には、 tmux において使用する設定ファイル tmux.conf の絶対パスを、設定ファイルを読み込む順にセミコロンで区切って指定します。なお、 tmux.conf のパスには、 ~/ 及び、先頭に $ を付した環境変数を使用できます。

環境変数 TMUX_CONF が指定されない場合は、 tmux のコンパイル時に指定されるマクロ TMUX_CONF の値が使用されます。

なお、この環境変数 TMUX_CONF は、 AppImage パッケージファイルにて主に使用されます。

謝辞

先ず最初に、本差分ファイルを作成するに当たっては、下記の URL にある、 Markus Kuhn 氏が作成した East_Asian_Width 特性が A の文字の扱いを考慮した wcwidth(3) 関数の実装を使用しました。 Markus Kuhn 氏には心より感謝いたします。

また、本差分ファイルについて、 tmux の画面分割の為のボーダーラインの罫線文字について判別と適切な描画を行う為の修正を作成して頂いた koie-hidetaka 氏に心より感謝致します。 koie-hidetaka 氏におきましては、他にも本差分ファイルに関して有益な指摘も幾つか頂きました。

最後に、 tmux の作者である Nicholas Marriott 氏を初めとする tmux の開発コミュニティ及び tmux に関わる全ての人々に心より感謝致します。

使用条件

本差分ファイルは、端末多重化ソフトウェアである tmux に適用する差分ファイルであり、以下に述べる各氏が著作権を有し、tmux のライセンスと同様である ISC License に基づいて配布されるものとします。

本差分ファイルの使用条件の詳細については、本リポジトリに同梱する LICENSE を参照して下さい。

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].