aboutsummaryrefslogtreecommitdiffhomepage
path: root/content/posts/2021-10-02
diff options
context:
space:
mode:
Diffstat (limited to 'content/posts/2021-10-02')
-rw-r--r--content/posts/2021-10-02/ruby-then-keyword-and-case-in.xml12
-rw-r--r--content/posts/2021-10-02/rust-where-are-primitive-types-from.xml6
-rw-r--r--content/posts/2021-10-02/vim-difference-between-autocmd-bufwrite-and-bufwritepre.xml223
-rw-r--r--content/posts/2021-10-02/vim-swap-order-of-selected-lines.xml38
4 files changed, 139 insertions, 140 deletions
diff --git a/content/posts/2021-10-02/ruby-then-keyword-and-case-in.xml b/content/posts/2021-10-02/ruby-then-keyword-and-case-in.xml
index 40ac316..00afc01 100644
--- a/content/posts/2021-10-02/ruby-then-keyword-and-case-in.xml
+++ b/content/posts/2021-10-02/ruby-then-keyword-and-case-in.xml
@@ -23,14 +23,14 @@
<simpara>
<hr/>
</simpara>
- <section xml:id="_tl_dr">
+ <section xml:id="tl-dr">
<title>TL; DR</title>
<simpara>
<literal>case</literal> - <literal>in</literal> によるパターンマッチング構文でも、<literal>case</literal> - <literal>when</literal>
と同じように <literal>then</literal> が使える (場合によっては使う必要がある)。
</simpara>
</section>
- <section xml:id="_then_とは">
+ <section xml:id="what-is-then-keyword">
<title><literal>then</literal> とは</title>
<simpara>
使われることは稀だが、Ruby では <literal>then</literal>
@@ -75,7 +75,7 @@
]]>
</programlisting>
</section>
- <section xml:id="_なぜ普段は書かなくてもよいのか">
+ <section xml:id="why-then-is-usually-unnecessary">
<title>なぜ普段は書かなくてもよいのか</title>
<simpara>
普通 Ruby のコードで <literal>then</literal>
@@ -116,7 +116,7 @@
無事 Hello, World! と出力されるようになった。
</simpara>
</section>
- <section xml:id="_なぜ_then_や_や改行が必要か">
+ <section xml:id="why-then-or-linebreak-is-needed">
<title>なぜ <literal>then</literal> や <literal>;</literal> や改行が必要か</title>
<simpara>
なぜ <literal>then</literal> や <literal>;</literal> や改行 (以下 「<literal>then</literal> 等」)
@@ -158,7 +158,7 @@
が代用できるので、ほとんどの場合 <literal>then</literal> は必要ない。
</simpara>
</section>
- <section xml:id="_case_in_における_then">
+ <section xml:id="then-in-case-in">
<title><literal>case</literal> - <literal>in</literal> における <literal>then</literal></title>
<simpara>
ようやく本題にたどり着いた。来る Ruby 3.0 では <literal>case</literal> と <literal>in</literal>
@@ -257,7 +257,7 @@
]]>
</programlisting>
</section>
- <section xml:id="_まとめ">
+ <section xml:id="outro">
<title>まとめ</title>
<itemizedlist>
<listitem>
diff --git a/content/posts/2021-10-02/rust-where-are-primitive-types-from.xml b/content/posts/2021-10-02/rust-where-are-primitive-types-from.xml
index f395f4f..7c19fc5 100644
--- a/content/posts/2021-10-02/rust-where-are-primitive-types-from.xml
+++ b/content/posts/2021-10-02/rust-where-are-primitive-types-from.xml
@@ -22,7 +22,7 @@
<simpara>
<hr/>
</simpara>
- <section xml:id="_前置き">
+ <section xml:id="intro">
<title>前置き</title>
<simpara>
Rust
@@ -63,7 +63,7 @@
</simpara>
</blockquote>
</section>
- <section xml:id="_調査">
+ <section xml:id="code-reading">
<title>調査</title>
<simpara>
調査に使用したソース (調査時点での最新 master)
@@ -230,7 +230,7 @@
という名前の別の型が見つかるからだ。
</simpara>
</section>
- <section xml:id="_まとめ">
+ <section xml:id="outro">
<title>まとめ</title>
<simpara>
Rust
diff --git a/content/posts/2021-10-02/vim-difference-between-autocmd-bufwrite-and-bufwritepre.xml b/content/posts/2021-10-02/vim-difference-between-autocmd-bufwrite-and-bufwritepre.xml
index 2a61fb4..4e3f187 100644
--- a/content/posts/2021-10-02/vim-difference-between-autocmd-bufwrite-and-bufwritepre.xml
+++ b/content/posts/2021-10-02/vim-difference-between-autocmd-bufwrite-and-bufwritepre.xml
@@ -22,13 +22,13 @@
<simpara>
<hr/>
</simpara>
- <section xml:id="_tl_dr">
+ <section xml:id="tl-dr">
<title>TL; DR</title>
<simpara>
違いはない。ただのエイリアス。
</simpara>
</section>
- <section xml:id="_調査記録">
+ <section xml:id="code-reading">
<title>調査記録</title>
<simpara>
Vim の autocmd events には似通った名前のものがいくつかある。大抵は
@@ -56,114 +56,113 @@
<blockquote>
<simpara>
ソースコードへのリンク
- <link xl:href="https://github.com/vim/vim/tree/8e6be34338f13a6a625f19bcef82019c9adc65f2">vim
- (調査時点での master branch)</link>
- <link xl:href="https://github.com/neovim/neovim/tree/71d4f5851f068eeb432af34850dddda8cc1c71e3">neovim
- (上に同じ)</link>
- </simpara>
-</blockquote>
-<section xml:id="_vim_のソースコード">
- <title>vim のソースコード</title>
- <simpara>
- 以下は、autocmd events
- の名前と内部で使われている整数値とのマッピングを定義している箇所である。見ての通り、上でエイリアスではないかと述べた3組には、それぞれ同じ内部値が使われている。
- </simpara>
- <simpara>
- <link xl:href="https://github.com/vim/vim/blob/8e6be34338f13a6a625f19bcef82019c9adc65f2/src/autocmd.c#L85-L86">https://github.com/vim/vim/blob/8e6be34338f13a6a625f19bcef82019c9adc65f2/src/autocmd.c#L85-L86</link>
- </simpara>
- <programlisting language="c" linenumbering="unnumbered">
- <![CDATA[
- {"BufAdd", EVENT_BUFADD},
- {"BufCreate", EVENT_BUFADD},
- ]]>
- </programlisting>
- <simpara>
- <link xl:href="https://github.com/vim/vim/blob/8e6be34338f13a6a625f19bcef82019c9adc65f2/src/autocmd.c#L95-L97">https://github.com/vim/vim/blob/8e6be34338f13a6a625f19bcef82019c9adc65f2/src/autocmd.c#L95-L97</link>
- </simpara>
- <programlisting language="c" linenumbering="unnumbered">
- <![CDATA[
- {"BufRead", EVENT_BUFREADPOST},
- {"BufReadCmd", EVENT_BUFREADCMD},
- {"BufReadPost", EVENT_BUFREADPOST},
- ]]>
- </programlisting>
- <simpara>
- <link xl:href="https://github.com/vim/vim/blob/8e6be34338f13a6a625f19bcef82019c9adc65f2/src/autocmd.c#L103-L105">https://github.com/vim/vim/blob/8e6be34338f13a6a625f19bcef82019c9adc65f2/src/autocmd.c#L103-L105</link>
- </simpara>
- <programlisting language="c" linenumbering="unnumbered">
- <![CDATA[
- {"BufWrite", EVENT_BUFWRITEPRE},
- {"BufWritePost", EVENT_BUFWRITEPOST},
- {"BufWritePre", EVENT_BUFWRITEPRE},
- ]]>
- </programlisting>
-</section>
-<section xml:id="_neovim_のソースコード">
- <title>neovim のソースコード</title>
- <simpara>
- neovim の場合でも同様のマッピングが定義されているが、こちらの場合は Lua
- で書かれている。以下にある通り、はっきり <literal>aliases</literal> と書かれている。
- </simpara>
- <simpara>
- <link xl:href="https://github.com/neovim/neovim/blob/71d4f5851f068eeb432af34850dddda8cc1c71e3/src/nvim/auevents.lua#L119-L124">https://github.com/neovim/neovim/blob/71d4f5851f068eeb432af34850dddda8cc1c71e3/src/nvim/auevents.lua#L119-L124</link>
- </simpara>
- <programlisting language="lua" linenumbering="unnumbered">
- <![CDATA[
- aliases = {
- BufCreate = 'BufAdd',
- BufRead = 'BufReadPost',
- BufWrite = 'BufWritePre',
- FileEncoding = 'EncodingChanged',
- },
- ]]>
- </programlisting>
- <simpara>
- ところで、上では取り上げなかった <literal>FileEncoding</literal> だが、これは
- <literal>:help FileEncoding</literal> にしっかりと書いてある。
- </simpara>
- <literallayout class="monospaced"> *FileEncoding*
- <![CDATA[
- FileEncoding Obsolete. It still works and is equivalent
- to |EncodingChanged|.
- ]]>
-</literallayout>
-</section>
-<section xml:id="_まとめ">
- <title>まとめ</title>
- <simpara>
- 記事タイトルについて言えば、どちらも変わらないので好きな方を使えばよい。あえて言えば、次のようになるだろう。
- </simpara>
- <itemizedlist>
- <listitem>
- <literal>BufAdd</literal>/<literal>BufCreate</literal>
- <itemizedlist>
- <listitem>→ <literal>BufCreate</literal> は歴史的な理由により ("for historic reasons") 存在しているため、新しい方 (<literal>BufAdd</literal>) を使う</listitem>
- </itemizedlist>
- </listitem>
- <listitem>
- <literal>BufRead</literal>/<literal>BufReadPost</literal>
- <itemizedlist>
- <listitem>→ <literal>BufReadPre</literal> との対称性のため、あるいは <literal>BufWritePost</literal> との対称性のため <literal>BufReadPost</literal> を使う</listitem>
- </itemizedlist>
- </listitem>
- <listitem>
- <literal>BufWrite</literal>/<literal>BufWritePre</literal>
- <itemizedlist>
- <listitem>→ <literal>BufWritePost</literal> との対称性のため、あるいは <literal>BufReadPre</literal> との対称性のため <literal>BufWritePre</literal> を使う</listitem>
- </itemizedlist>
- </listitem>
- <listitem>
- <literal>FileEncoding</literal>/<literal>EncodingChanged</literal>
- <itemizedlist>
- <listitem>→ <literal>FileEncoding</literal> は <literal>`Obsolete'' と明言されているので、`EncodingChanged</literal> を使う</listitem>
- </itemizedlist>
- </listitem>
- </itemizedlist>
- <simpara>
- ところでこの調査で知ったのだが、<literal>BufRead</literal> と <literal>BufWrite</literal>
- は上にある通り発火するタイミングが「後」と「前」で対称性がない。可能なら
- <literal>Pre</literal>/<literal>Post</literal> 付きのものを使った方が分かりやすいだろう。
- </simpara>
-</section>
-</section>
+ <link xl:href="https://github.com/vim/vim/tree/8e6be34338f13a6a625f19bcef82019c9adc65f2">vim (調査時点での master branch)</link>
+ <link xl:href="https://github.com/neovim/neovim/tree/71d4f5851f068eeb432af34850dddda8cc1c71e3">neovim (上に同じ)</link>
+ </simpara>
+ </blockquote>
+ <section xml:id="code-reading--vim">
+ <title>vim のソースコード</title>
+ <simpara>
+ 以下は、autocmd events
+ の名前と内部で使われている整数値とのマッピングを定義している箇所である。見ての通り、上でエイリアスではないかと述べた3組には、それぞれ同じ内部値が使われている。
+ </simpara>
+ <simpara>
+ <link xl:href="https://github.com/vim/vim/blob/8e6be34338f13a6a625f19bcef82019c9adc65f2/src/autocmd.c#L85-L86">https://github.com/vim/vim/blob/8e6be34338f13a6a625f19bcef82019c9adc65f2/src/autocmd.c#L85-L86</link>
+ </simpara>
+ <programlisting language="c" linenumbering="unnumbered">
+ <![CDATA[
+ {"BufAdd", EVENT_BUFADD},
+ {"BufCreate", EVENT_BUFADD},
+ ]]>
+ </programlisting>
+ <simpara>
+ <link xl:href="https://github.com/vim/vim/blob/8e6be34338f13a6a625f19bcef82019c9adc65f2/src/autocmd.c#L95-L97">https://github.com/vim/vim/blob/8e6be34338f13a6a625f19bcef82019c9adc65f2/src/autocmd.c#L95-L97</link>
+ </simpara>
+ <programlisting language="c" linenumbering="unnumbered">
+ <![CDATA[
+ {"BufRead", EVENT_BUFREADPOST},
+ {"BufReadCmd", EVENT_BUFREADCMD},
+ {"BufReadPost", EVENT_BUFREADPOST},
+ ]]>
+ </programlisting>
+ <simpara>
+ <link xl:href="https://github.com/vim/vim/blob/8e6be34338f13a6a625f19bcef82019c9adc65f2/src/autocmd.c#L103-L105">https://github.com/vim/vim/blob/8e6be34338f13a6a625f19bcef82019c9adc65f2/src/autocmd.c#L103-L105</link>
+ </simpara>
+ <programlisting language="c" linenumbering="unnumbered">
+ <![CDATA[
+ {"BufWrite", EVENT_BUFWRITEPRE},
+ {"BufWritePost", EVENT_BUFWRITEPOST},
+ {"BufWritePre", EVENT_BUFWRITEPRE},
+ ]]>
+ </programlisting>
+ </section>
+ <section xml:id="code-reading--neovim">
+ <title>neovim のソースコード</title>
+ <simpara>
+ neovim の場合でも同様のマッピングが定義されているが、こちらの場合は Lua
+ で書かれている。以下にある通り、はっきり <literal>aliases</literal> と書かれている。
+ </simpara>
+ <simpara>
+ <link xl:href="https://github.com/neovim/neovim/blob/71d4f5851f068eeb432af34850dddda8cc1c71e3/src/nvim/auevents.lua#L119-L124">https://github.com/neovim/neovim/blob/71d4f5851f068eeb432af34850dddda8cc1c71e3/src/nvim/auevents.lua#L119-L124</link>
+ </simpara>
+ <programlisting language="lua" linenumbering="unnumbered">
+ <![CDATA[
+ aliases = {
+ BufCreate = 'BufAdd',
+ BufRead = 'BufReadPost',
+ BufWrite = 'BufWritePre',
+ FileEncoding = 'EncodingChanged',
+ },
+ ]]>
+ </programlisting>
+ <simpara>
+ ところで、上では取り上げなかった <literal>FileEncoding</literal> だが、これは
+ <literal>:help FileEncoding</literal> にしっかりと書いてある。
+ </simpara>
+ <literallayout class="monospaced">
+ <![CDATA[
+ *FileEncoding*
+ FileEncoding Obsolete. It still works and is equivalent
+ to |EncodingChanged|.
+ ]]>
+ </literallayout>
+ </section>
+ </section>
+ <section xml:id="outro">
+ <title>まとめ</title>
+ <simpara>
+ 記事タイトルについて言えば、どちらも変わらないので好きな方を使えばよい。あえて言えば、次のようになるだろう。
+ </simpara>
+ <itemizedlist>
+ <listitem>
+ <literal>BufAdd</literal>/<literal>BufCreate</literal>
+ <itemizedlist>
+ <listitem>→ <literal>BufCreate</literal> は歴史的な理由により ("for historic reasons") 存在しているため、新しい方 (<literal>BufAdd</literal>) を使う</listitem>
+ </itemizedlist>
+ </listitem>
+ <listitem>
+ <literal>BufRead</literal>/<literal>BufReadPost</literal>
+ <itemizedlist>
+ <listitem>→ <literal>BufReadPre</literal> との対称性のため、あるいは <literal>BufWritePost</literal> との対称性のため <literal>BufReadPost</literal> を使う</listitem>
+ </itemizedlist>
+ </listitem>
+ <listitem>
+ <literal>BufWrite</literal>/<literal>BufWritePre</literal>
+ <itemizedlist>
+ <listitem>→ <literal>BufWritePost</literal> との対称性のため、あるいは <literal>BufReadPre</literal> との対称性のため <literal>BufWritePre</literal> を使う</listitem>
+ </itemizedlist>
+ </listitem>
+ <listitem>
+ <literal>FileEncoding</literal>/<literal>EncodingChanged</literal>
+ <itemizedlist>
+ <listitem>→ <literal>FileEncoding</literal> は <literal>`Obsolete'' と明言されているので、`EncodingChanged</literal> を使う</listitem>
+ </itemizedlist>
+ </listitem>
+ </itemizedlist>
+ <simpara>
+ ところでこの調査で知ったのだが、<literal>BufRead</literal> と <literal>BufWrite</literal>
+ は上にある通り発火するタイミングが「後」と「前」で対称性がない。可能なら
+ <literal>Pre</literal>/<literal>Post</literal> 付きのものを使った方が分かりやすいだろう。
+ </simpara>
+ </section>
</article>
diff --git a/content/posts/2021-10-02/vim-swap-order-of-selected-lines.xml b/content/posts/2021-10-02/vim-swap-order-of-selected-lines.xml
index f50a8a0..f919301 100644
--- a/content/posts/2021-10-02/vim-swap-order-of-selected-lines.xml
+++ b/content/posts/2021-10-02/vim-swap-order-of-selected-lines.xml
@@ -22,7 +22,19 @@
<simpara>
<hr/>
</simpara>
- <section xml:id="_バージョン情報">
+ <section xml:id="tl-dr">
+ <title>TL; DR</title>
+ <programlisting language="vim" linenumbering="unnumbered">
+ <![CDATA[
+ " License: Public Domain
+
+ command! -bar -range=%
+ \ Reverse
+ \ keeppatterns <line1>,<line2>g/^/m<line1>-1
+ ]]>
+ </programlisting>
+ </section>
+ <section xml:id="version">
<title>バージョン情報</title>
<simpara>
<literal>:version</literal> の一部
@@ -34,9 +46,9 @@
</simpara>
</blockquote>
</section>
- <section xml:id="_よく紹介されている手法">
+ <section xml:id="existing-solution">
<title>よく紹介されている手法</title>
- <section xml:id="_tac_tail">
+ <section xml:id="existing-solution--external-commands">
<title><literal>tac</literal> / <literal>tail</literal></title>
<simpara>
<literal>tac</literal> や <literal>tail -r</literal> などの外部コマンドを <literal>!</literal>
@@ -52,7 +64,7 @@
オプションは環境によって利用できないことがあり、複数の環境を行き来する場合に採用しづらい
</simpara>
</section>
- <section xml:id="_gm0">
+ <section xml:id="existing-solution--global-command">
<title><literal>:g/^/m0</literal></title>
<simpara>
こちらは外部コマンドに頼らず、Vim の機能のみを使う。<literal>g</literal> は <literal>:global</literal>
@@ -99,7 +111,7 @@
</simpara>
</section>
</section>
- <section xml:id="_gm0_の問題点">
+ <section xml:id="problem-of-global-command">
<title><literal>:g/^/m0</literal> の問題点</title>
<simpara>
<literal>:global</literal>
@@ -114,7 +126,7 @@
</simpara>
</blockquote>
</section>
- <section xml:id="_解決策">
+ <section xml:id="solution">
<title>解決策</title>
<blockquote>
<simpara>
@@ -177,7 +189,7 @@
の呼び出しをユーザー定義関数に切り出すことで上述の問題を解決できる。
</simpara>
</section>
- <section xml:id="_解決策_改訂版">
+ <section xml:id="solution-revised">
<title>解決策 (改訂版)</title>
<blockquote>
<simpara>
@@ -203,16 +215,4 @@
</simpara>
</blockquote>
</section>
- <section xml:id="_コピペ用再掲">
- <title>コピペ用再掲</title>
- <programlisting language="vim" linenumbering="unnumbered">
- <![CDATA[
- " License: Public Domain
-
- command! -bar -range=%
- \ Reverse
- \ keeppatterns <line1>,<line2>g/^/m<line1>-1
- ]]>
- </programlisting>
- </section>
</article>