#ifdef を確定しながらコードを減らしていく。

unknown: html => {"type":"html","value":"<!-- truncate -->","position":{"start":{"line":4,"column":1,"offset":30},"end":{"line":4,"column":18,"offset":47}}}

config.h に注意

build コマンドの引き数と config.h の内容を連動させる。 うっかり片方だけ作業するとビルドが通らないならまだしも、壊れるかもしれない。

nvim の treesitter が便利

#if#endif 間のジャンプができて便利。

https://github.com/andymass/vim-matchup

📝

巨大なファイル(file.c

unknown: textDirective => {"type":"textDirective","name":"7000行","attributes":{},"children":[],"position":{"start":{"line":18,"column":15,"offset":266},"end":{"line":18,"column":21,"offset":272}}}
)で遅かった…

また作業用に @keyword.directive.c に目立つ色を指定した。

以前使った python スクリプトを発掘

#ifdef X #elseif #endif を対して define を指定して有効なブロックを残して、 無効ブロックを削除するスクリプト。 うまく処理できないケースもあるが無いよりは役に立つ。 うまくいかないところは手でなおす。

ひとつずつ減らして動作確認する

まとめて削除したらビルドは通るが動かなくなった。 少しずつ減らして、都度最低限の動作確認をして進める。 unittest とかあるといいのだけど無いし。 将来的には作りたいですね。

さらに、funcmap の index がずれる!。 都度、再生成させねばならない。注意。

作業前

> cloc --exclude-dir=docusaurus --match-f=\.[ch]$ .
     142 text files.
     142 unique files.
       1 file ignored.

github.com/AlDanial/cloc v 1.90  T=0.14 s (1044.0 files/s, 511900.0 lines/s)
-------------------------------------------------------------------------------
Language                     files          blank        comment           code
-------------------------------------------------------------------------------
C                               88           4377           1868          55191
C/C++ Header                    54            596            196           7395
-------------------------------------------------------------------------------
SUM:                           142           4973           2064          62586
-------------------------------------------------------------------------------

cygwin?系

__CYGWIN__
SUPPORT_WIN9X_CONSOLE_MBCS
__DJGPP__
__MINGW32_VERSION
__EMX__
__WATT32__
-------------------------------------------------------------------------------
Language                     files          blank        comment           code
-------------------------------------------------------------------------------
C                               88           4318           1814          54247
C/C++ Header                    54            593            196           7307
-------------------------------------------------------------------------------
SUM:                           142           4911           2010          61554
-------------------------------------------------------------------------------

1000 行くらい減ったような。

Term系

USE_COLOR
USE_ANSI_COLOR
USE_BG_COLOR
USE_RAW_SCROLL
-------------------------------------------------------------------------------
Language                     files          blank        comment           code
-------------------------------------------------------------------------------
C                               88           4282           1801          53297
C/C++ Header                    54            593            196           7267
-------------------------------------------------------------------------------
SUM:                           142           4875           1997          60564
-------------------------------------------------------------------------------

1000 行くらい減ったような。 白黒になった。underline, reverse などはまだ健在。

mouse / menu / imagemap / image(sixelなど)

USE_MENU
MENU_MAP
MENU_SELECT
USE_MOUSE
USE_GPM
USE_IMAGE
-------------------------------------------------------------------------------
Language                     files          blank        comment           code
-------------------------------------------------------------------------------
C                               88           3817           1674          48125
C/C++ Header                    54            587            194           7025
-------------------------------------------------------------------------------
SUM:                           142           4404           1868          55150
-------------------------------------------------------------------------------

5000行くらい減った👀

文字コード系

USE_M17N
USE_UNICODE
ENABLE_NLS
-------------------------------------------------------------------------------
Language                     files          blank        comment           code
-------------------------------------------------------------------------------
C                               62           3256           1568          37780
C/C++ Header                    33            393            198           5685
-------------------------------------------------------------------------------
SUM:                            95           3649           1766          43465
-------------------------------------------------------------------------------

5000行くらい減った👀 ASCII モードになっちゃった。 ここで試しに libwc を削除したところビルド成功。 さらに7000行くらい減ったー。 これなら bohem GC をやめて std::string に乗りかえ出来るんでないか。

w3mimg

-------------------------------------------------------------------------------
Language                     files          blank        comment           code
-------------------------------------------------------------------------------
C                               55           2965           1471          35313
C/C++ Header                    30            373            195           5585
-------------------------------------------------------------------------------
SUM:                            85           3338           1666          40898
-------------------------------------------------------------------------------

未使用。

http以外のプロトコル

USE_NNTP
USE_GOPHER

いつのまにか消していて、どれくらい減ったかわらない。 たぶん、量的なインパクトは少ない。

FTP も消したいのだけど、マクロ制御じゃないようだ。 FTP は2本コネクションを張って複雑さを増やすので消すと簡単にできる。