Emacsの両端の領域 fringe をなくす

Saturday, May 9, 2020

Emacsの両端の領域、今まで名称がわからなかったのですが fringe と呼ぶようです。

図で示すとこちらの赤枠部分のことなのですが、微妙に両端にスペースがあります。そのスペースでテキストを折り返していることを示すアイコンが表示されています。

./images/figure_01.png

この領域が不要だという方がいたら、Emacsのソースコードを書き換えることになるのですが、 src/frame.cgui_set_left_fringegui_set_right_fringe を調整してみるといいかもしれません。下記に gui_set_left_fringe で例を示します。

# src/frame.c
# git://git.sv.gnu.org/emacs.git 
# commit 4a895c1b
void
gui_set_left_fringe (struct frame *f, Lisp_Object new_value, Lisp_Object old_value)
{
  int unit = FRAME_COLUMN_WIDTH (f);
  int old_width = FRAME_LEFT_FRINGE_WIDTH (f);
  int new_width;

  new_width = (RANGED_FIXNUMP (-INT_MAX, new_value, INT_MAX)
	       ? eabs (XFIXNUM (new_value)) : 8);

  new_width = 0; /* 筆者による加工 */

  if (new_width != old_width)
    {
      f->left_fringe_width = new_width;
      f->fringe_cols /* Round up.  */
	= (new_width + FRAME_RIGHT_FRINGE_WIDTH (f) + unit - 1) / unit;

      if (FRAME_NATIVE_WINDOW (f) != 0)
	adjust_frame_size (f, -1, -1, 3, 0, Qleft_fringe);

      SET_FRAME_GARBAGED (f);
    }
}

上のコードを使ってビルドしたEmacsがこちら。左端に fringe がないことがわかります。

./images/figure_02.png

前述のコードはEmacs v27ベースのものを加工し、macOS Catalinaでビルドしています。

余談ですが、scratchバッファに表示しているテキストは下記の作品の冒頭です。

Emacs

ゼロから始めるmacOSアプリの署名と公証 (独自配信用)

Hugo向けorgファイルのIn-Buffer Settings風の項目にブラケット付与が必須になる件