2014/09/22


Atom 最高ですね!!

でも、Atom は 21 世紀のエディタです。まだ 21 世紀になって 14 年しか経っていないので、20 世紀最強のエディタに比べてまだまだ足りない機能があるのはしょうがないですね!!

86 年後に勝負しよう!!

って感じですね。

みんなが拡張書けば 86 年がドンドン縮んでくると思うのですが、ぶっちゃけまだまだです。 なので、最強にするための拡張書いてみました。

open-vim

Atom で今開いているファイルを Vim で開く拡張です。

「あー、Vim だと xxx 出来るのに〜」

とか脳みそがまだ 20 世紀な時とか

「あー、このファイルデカすぎて Atom で編集すると重い……」

みたいなかわいそうな作業している時とか(2050 年位のマシンだとさくさくだと思いますけど!!)にお使いください。

21 世紀に戻る

command! OpenAtom !start atom %

こんな感じのを .vimrc に書いておけばいいんじゃないでしょうか?

Back To The Future !!!

p.s.

Emacs の話はしていません

参考資料: 21 世紀のエディタである Atom を最強にする - yoshiori.github.io

ネタです。ご理解下さい。


2014/09/18


PDCurses はその名の通り Public Domain な curses 実装な訳ですが、Windows の実装こそありますが如何ともし難い問題がありました。

PDCurses には、ワイド文字列関数とバイト列で貰う実装があります。UNIX 系アプリケーションの多くは内部文字列がほぼ UTF-8 となり、C言語で受け渡される文字列は既成事実として UTF-8 になってしまいました。

しかしながら日本の Windows ではバイト列と言えば Shift_JIS な訳で、そのまま移植してしまうと文字化けが発生します。各アプリケーション側がワイド文字列でコードを書いてくれれば良いのですが、そんな事を気にする人はまずいません。ましてや各アプリケーションが UTF-8 と MBCS (Multi Byte Character Set) の変換を行うのは酷な話です。出来れば内部文字列は UTF-8 のままで Windows でも正しく表示されて欲しいのです。

mattn/pdcurses - GitHub
https://github.com/mattn/pdcurses

という訳で pdcurses に手を入れてみました。もし pdcurses.dll をリンクしていて表示が文字化けしているアプリケーションがあれば、dll を入れ替えるだけで文字化けが解消するかと思います。

今日はこれを使って、コマンドラインベースのプレゼンテーションツールである mdp を Windows で動かしてみました。

visit1985/mdp · GitHub

A command-line based markdown presentation tool.

https://github.com/visit1985/mdp

mdp 自身は大した事をやってないので、ncurses の代わりに pdcurses をリンクする様な修正を入れただけです。

diff --git a/Makefile b/Makefile
index 63a1feb..54f8327 100644
--- a/Makefile
+++ b/Makefile
@@ -20,7 +20,7 @@
 
 CFLAGS   = -O3 -Wall
 LDFLAGS  = -s
-LDLIBS   = -lncurses
+LDLIBS   = -lpdcurses
 OBJECTS  = cstring.o cstack.o markdown.o parser.o viewer.o mdp.o
 DESTDIR ?= /usr/bin
 
diff --git a/include/viewer.h b/include/viewer.h
index 68c7a13..f6e70fb 100644
--- a/include/viewer.h
+++ b/include/viewer.h
@@ -32,7 +32,7 @@
  *
  */
 
-#include <ncurses.h>
+#include <curses.h>
 
 #include "parser.h"
 #include "cstack.h"
diff --git a/viewer.c b/viewer.c
index ba76f2f..ed83196 100644
--- a/viewer.c
+++ b/viewer.c
@@ -22,7 +22,6 @@
  */
 
 #include <locale.h> // setlocale
-#include <ncurses.h>
 #include <stdlib.h>
 #include <string.h> // strchr
 #include <unistd.h>

sample.md も日本語にして正しく動作する事が確認出来ました。

mdp1
mdp2
mdp3
mdp4

2014/09/16


2014年でも html を解析してゴニョゴニョするなんて要件はまだまだある訳で、そんな時に便利なのが pup というコマンドです。

EricChiang/pup - GitHub

README.md pup pup is a command line tool for processing HTML. It reads from stdin, prints to stdout,...

https://github.com/EricChiang/pup

通常、こういったツールは perl や ruby、python 等で提供されランタイムがインストールされていない環境で動かすのはちょっとした手間が発生していました。しかし pup ならば golang で出来ているのでバイナリ1つあれば動かせます。

使い方は、例えばこのサイトのパーマリンクのHTMLを得たいならば

curl -s http://mattn.kaoriya.net/ | pup a.permalink

とするだけ。CSS セレクタで指定します。またテキストを得たいならば

curl -s http://mattn.kaoriya.net/ | pup a.permalink text{}

といった具合です。一応バイナリリリースもされていますが現状 Windows で色付き表示(-c フラグ)でエスケープシーケンスが表示されてしまいます。

pull-request を送ってあるので、うまく行けばマージして貰えると思います。

追記: マージされました