週刊Emacs News 2016年11月14日

[emacs-tangents](http://lists.gnu.org/archive/html/emacs-tangents/)メーリングリストにまとめられたEmacs界隈のニュースに@tadsanが雑にコメントつけつつ紹介していくよ ヾ(〃＞＜)ﾉﾞ☆

## 注意

この記事の出典： [2016-11-14 Emacs News](http://lists.gnu.org/archive/html/emacs-tangents/2016-11/msg00002.html)


見出し以外の文章は出典には存在せず、本文および掲載コードの責任は @tadsan にあります。

##  ナビゲーション

### [Edit file as another user in Emacs](http://gergely.polonkai.eu/2016/11/10/edit-file-as-other-user-in-emacs/)

ほかのユーザーとしてファイルを編集するやつ。`sudo`あること前提。

### [When a bookmark is a directory, do find-file from there…](https://www.reddit.com/r/emacs/comments/5cfz2x/when_a_bookmark_is_a_directory_do_findfile_from/)

ブックマーク先がディレクトリだったら、そこから`find-file`するやつ。

Emacsのブックマーク機能については[Emacsのブックマーク機能 - tototoshi の日記](http://tototoshi.hatenablog.com/entry/20101226/1293334388)とか[GNU Emacsマニュアル: 13.8 ブックマーク](https://ayatakesi.github.io/emacs/24.5/Bookmarks.html)あたりを読んでみてください。

### [1st Plugin! Search youtube from in emacs. Play in browser/tool of choice](https://github.com/maximus12793/helm-youtube) ([Reddit](https://www.reddit.com/r/emacs/comments/5cmoa7/1st_plugin_search_youtube_from_in_emacs_play_in/)) Small library for Helm

Emacs上でYouTubeを検索して、さらに絞りこむやつ。べんり！

### [Neotree - yanking full path of note at point](http://stackoverflow.com/questions/40564562/in-emacs-using-neotree-how-can-i-yank-the-full-path-of-the-node-at-point-to-th)

「Neotreeでカーソル位置にあるファイルのフルパスをコピペするのはどうすりゃええの？」って質問。

[NeoTree](https://github.com/jaypei/emacs-neotree)は折り畳み式のファイルツリーを表示するべんりなやつだよ(Vimの[NERDTree](https://github.com/scrooloose/nerdtree)に影響を受けてる)。

まあまとめると、こんな感じに表示するといいんじゃないですかねって設定例。

```init.el
(defun my/neotree-kill-filename-at-point ()
  "Kill full path of note at point."
  (interactive)
  (message "Copy %s"
           (kill-new (neo-buffer--get-filename-current-line))))

;; use-packageつかってる場合
(use-package neotree :defer t
  :config
  (bind-key "M-w" 'my/neotree-kill-filename-at-point neotree-mode-map))

;; use-packageなしの場合
(with-eval-after-load 'neotree
  (define-key neotree-mode-map (kbd "M-w") 'my/neotree-kill-filename-at-point))
```

### [Adding a custom "watch" icon to the modeline?](https://www.reddit.com/r/emacs/comments/5c2rpq/adding_a_custom_watch_icon_to_the_modeline/)

ファイルの変更を監視してコンパイルするようなプロセス(コマンド)を実行してるんだけど、非同期にコンパイルしてくれればよくて、いつもはコマンドの実行結果をわざわざ見る必要はない。でもたまーには実行結果を見たい。そんなときどうすればいい？ みたいな質問。

で、こんなん作ったんよと[mallt/cmd-to-echo: Show the output of long-running commands in the emacs echo area](https://github.com/mallt/cmd-to-echo)の紹介。だいたいこれでいいんじゃね？

### [Date-sorted interactive recursive search with ivy, counsel and ag](https://vxlabs.com/2016/11/07/date-sorted-interactive-recursive-search-with-ivy-counsel-and-ag/) ([Reddit](https://www.reddit.com/r/emacs/comments/5bsap8/datesorted_interactive_recursive_search_with_ivy/))

[Note-taking strategy early 2016 – cpbotha.net](https://cpbotha.net/2016/01/05/note-taking-strategy-early-2016/)（2016年のノート取り戦略）に従ってノート取ってるんだけど、[Ivy/Counsel](https://github.com/abo-abo/swiper)を使って日付順に並べて検索したいお、って話。

### [Persistent highlighting in Emacs](http://kitchingroup.cheme.cmu.edu/blog/2016/11/10/Persistent-highlighting-in-Emacs/)

Emacsの画面上に表示された強調表示をそのまま永続化——ここではHTMLとして出力——したい。そんなときは[Htmlize](https://www.emacswiki.org/emacs/Htmlize)だよ！ …って話。

微妙に変形してみて、こんな感じではどうですか… なんだけど、`(htmlize-buffer)`がちょっと微妙に不安定っぽさを感じる。いまのところあまり依存しない方がいいかも。

```my-htmlize.el
(defun my/display-htmlize-current-buffer ()
  "Display HTMLized buffer from current buffer."
  (interactive)
  (display-buffer (htmlize-buffer)))

(defun my/kill-htmlize-current-buffer ()
  "Kill HTMLized content from current buffer."
  (interactive)
  (let ((buf (htmlize-buffer)))
    (kill-new (with-current-buffer buf
                (buffer-substring-no-properties (point-min) (point-max))))
    (kill-buffer buf)))
```

## Org Mode

### [Counting words in org-mode](http://anbasile.github.io/2016/11/14/wc-mode/) (hat-tip to [Irreal](http://irreal.org/blog/?p=5722) for the link and a note about customization)

`org-mode`で文字数カウントするならこうすればいいよ！ って話。[wc-mode](https://github.com/bnbeckwith/wc-mode)がすごいべんりっぽかった。Org Modeの項目に並んでるけど、別にorg-modeには依存してないのでなんでも大丈夫。

ちなみにEmacsのメジャーモードには**継承**の概念があって、文章編集系のモード(`org-mode`とか`markdown-mode`とか)は**`text-mode`**を、プログラミング言語のコーディング用のモードは**`prog-mode`**を継承するお作法があるので、`text-mode-hook`とか`prog-mode-hook`とかに登録すれば、いろんなモードをいっぺんに設定できますよ。

```el
;; org-modeだけならこう書く
(add-hook 'org-mode-hook 'wc-mode)

;; Markdownでも有効化してみる
(add-hook 'markdown-mode-hook 'wc-mode)

;; テキスト系のモードすべて有効化
(add-hook 'text-mode-hook 'wc-mode)
```

### [Instantly insert org todo via AutoHotKey (Windows) while emacs is closed](https://www.reddit.com/r/orgmode/comments/5bsu8k/instantly_insert_org_todo_via_autohotkey_windows/)

Windowsで<abbr title="AutoHotkey">AHK</abbr>([AutoHotkey](http://ahkscript.org/)/日本語 [AutoHotkey Wiki](http://ahkwiki.net/Top))を使って、Emacsを開いてなくてもすぐにorg-modeでToDoできるようにする設定。

### [Styling exported Agenda HTML.](https://www.reddit.com/r/orgmode/comments/5bnpy8/styling_exported_agenda_html/)

org-modeのアジェンダ機能(参考:[Emacs org-modeを使ってみる: (6) アジェンダ表示 - 屯遁のパズルとプログラミングの日記](http://d.hatena.ne.jp/tamura70/20100208/org))で外部CSSを埋め込みたいんだけど、どうすりゃいいのん？ って質問。

`#+HTML_HEAD`にHTMLを直接書いて読み込む方法で質問者は満足したらしい。そーなのかー。

### [My Emacs Writing Setup](http://www.tonyballantyne.com/EmacsWritingTips.html)

Emacsでの執筆環境構築について。

この記事を書いてる[Tony Ballantyne](https://en.wikipedia.org/wiki/Tony_Ballantyne)はWikipedia英語版にも記事がある商業SF作家のようだ。

## Emacs Lisp:

### [debug-on-entry](http://mbork.pl/2016-11-13_debug-on-entry) - how to find out what's calling a function

非同期処理を伴ったコードはデバッグしにくいけど、`debug-on-entry`でどうやって関数が呼ばれたかインタラクティブに追っていけるよ、みたいな話(たぶん)

### [Displaying nonexistent text in Emacs buffers](http://mbork.pl/2016-11-07_Displaying_nonexistent_text_in_Emacs_buffers)

テキストプロパティを変更して編集中のバッファの中身を見せかけだけ変更する(保存するテキストには影響しない)、みたいな話(たぶん)

### [How to write a function to transform a function to ivy action ?](https://www.reddit.com/r/emacs/comments/5c6ma9/how_to_write_a_function_to_transform_a_function/)

「どうやったら(Emacs Lispの)函数を[Ivy](https://github.com/abo-abo/swiper)のアクションとして登録できるの？」って質問。[oantolinがFrom helm, to ivy, a user perspectiveについて記入したコメント](https://www.reddit.com/r/emacs/comments/52lnad/from_helm_to_ivy_a_user_perspective/d7pj9mz/)を読めと言ってる。

### [GitHub - atomontage/xterm-color: ANSI -&gt; xterm-256 color text property translator for Emacs](https://github.com/atomontage/xterm-color) ([Reddit](https://www.reddit.com/r/emacs/comments/5bpumn/github_atomontagextermcolor_ansi_amp_xterm256/))

結構前からあったよね？ と思ったけどRedditに投稿されたからニュースとして上がってるようだ。Emacs標準で持ってる`ansi-color.el`よりも良いやつ。

## コーディング

### [A persistent scratch buffer](http://pragmaticemacs.com/emacs/a-persistent-scratch-buffer/)

`*scratch*`バッファの中身を自動的にファイルにバックアップして、Emacsを再起動したときに復元できるやつ。作者は[rainbow-delimiters](https://github.com/Fanael/rainbow-delimiters)が有名な[Fanaelたん](https://github.com/Fanael/)。

るびきちさんも紹介してる。 [persistent-scratch.el : \*scratch\*バッファを永続化・自動保存・復元する](http://emacs.rubikitch.com/persistent-scratch/)

### [Growing playlist of Emacs videos I make for the clojure community: CIDER, paredit and Magit up to now](https://www.youtube.com/playlist?list=PLdKXxqwRv6_y7rHHjbrK38E59t9ost3o3)

「生産的なEmacs」と称してClojureコミニュティに向けたEmacsの操作説明の動画っぽい。

[ParEdit](https://www.emacswiki.org/emacs/ParEdit)については、ClojureのみならずLisp系の言語を使ってるひとにはおすすめ。[Daregada](http://daregada.blogspot.jp/)さんの訳した[ParEdit チュートリアル](http://www.daregada.sakuraweb.com/paredit_tutorial_ja.html)もある。最近はPerEditの競合として[lispy](https://github.com/abo-abo/lispy)ってのもあるよ。

### [Installing Emacs from Source: Avoid the Conflict of ctags](https://www.topbug.net/blog/2016/11/10/installing-emacs-from-source-avoid-the-conflict-of-ctags/) ([Reddit](https://www.reddit.com/r/emacs/comments/5c6qx5/installing_emacs_from_source_avoid_the_conflict/))

Emacsをインストールするときに作られる`ctags`ってコマンド名は[Exuberant Ctags](http://ctags.sourceforge.net/)とか[Universal Ctags](https://ctags.io/)とかで衝突しちゃってるんだけど、Emacsのビルド時に別名をつけて衝突しないようにする方法。

`../configure --program-transform-name='s/^ctags$/ctags.emacs/'`してやれば良いらしい……？

### [How to set up Emacs for Rust Language using Spacemacs](https://www.youtube.com/watch?v=CJd-y154CBo) (4:30)

[Spacemacs](http://spacemacs.org/)で[Rust言語](https://www.rust-lang.org/)の補完ができる開発環境のセットアップを説明する動画。

## Magit

### [Magit: Git in Emacs - Grumpy Gits SG](https://www.youtube.com/watch?v=OMIxZhLU71U) (55:23)
### [Productive Emacs: Magit](https://www.youtube.com/watch?v=D1SJ6mFWYyA) (18:05)

## Emacs本体開発

### [Connection-local variables](http://git.savannah.gnu.org/cgit/emacs.git/commit/etc/NEWS?id=6647e05174ade1132a957e7e27f9ef6e96f3f9d7)

リモート接続(SSHとかでログイン)単位でローカル変数を設定できるようになるっぽい。

### [Include a systemd user init file](http://git.savannah.gnu.org/cgit/emacs.git/commit/etc/NEWS?id=181bd848eb9662759f076b31a32f6588e9eb58b4)

[ユーザー単位のsystemd設定](https://wiki.archlinuxjp.org/index.php/Systemd/%E3%83%A6%E3%83%BC%E3%82%B6%E3%83%BC)でEmacsデーモンを起動できる、らしい。

### [New function file-name-case-insensitive-p, case sensitivity check when renaming files](http://git.savannah.gnu.org/cgit/emacs.git/commit/etc/NEWS?id=2809012c8f9485d8dc54b186f989f289b2797892)

大文字小文字が違ってもファイルが存在するかチェックできる。

### [Discussion of prefix arguments for filling text](http://lists.gnu.org/archive/html/emacs-devel/2016-11/msg00313.html)

[テキストのフィル機能](https://ayatakesi.github.io/emacs/24.5/Filling.html#Filling)でコマンド実行時に`fill-column`を設定できるようにしようって提案。でもさ、その[数引数](http://ongaeshi.hatenablog.com/entry/mastering-emacs-and-number-argument)の渡しかたって変じゃね？ みたいな話がちょっと続いてた。

### [Discussion of performance issues with Emacs 25.1 Windows build](http://lists.gnu.org/archive/html/emacs-devel/2016-11/msg00250.html)

Windowsでのビルド遅すぎね？ まあちゃんと原因調べて改善していこうぜ、みたいな話。

### [Patches for url-auth](http://lists.gnu.org/archive/html/emacs-devel/2016-11/msg00304.html)

[Digest認証](https://ja.wikipedia.org/wiki/Digest%E8%AA%8D%E8%A8%BC)の改善っぽい。

### [Long philosophical discussion about lldb, Emacs, and GNU](http://lists.gnu.org/archive/html/emacs-devel/2016-11/msg00206.html)

結局、[LLDB](http://lldb.llvm.org/)のサポート機能はコード書いたら取り込んでくれんの？ LLVM/Clangも自由ソフトウェアなんだからサポートしてもいいんじゃね？ <!-- GNUには[GDB](https://www.gnu.org/software/gdb/)があるんだからLLVMに肩入れしたらGNUの損失になるだろ<abbr title="常識的に考えて">常考</abbr>、おいおい[Linux](https://ja.wikipedia.org/wiki/Linux)と[GNU Hurd](https://ja.wikipedia.org/wiki/GNU_Hurd)だって競合してるじゃんかよ、いやいやGDBよりも優れた自由ソフトウェア実装があるなら移行すれば開発リソース有効活用できるだろ、自由と無料はちゃうねん——  --> などなど。めんどくさい種類の議論。

### [Long discussion regarding support for Windows 9X](http://lists.gnu.org/archive/html/emacs-devel/2016-11/msg00149.html)

Windowsの32ビットサポートどうすんのよ、いやそもそもWindows9x系のサポートはどうすんのよ、[Windows ME](https://ja.wikipedia.org/wiki/Microsoft_Windows_Millennium_Edition)がメジャーだったことなんか一度もないだろ、みたいな話。

> ```
> From:	Richard Stallman
> Subject:	Re: Windows emacs-25.1 i686 vs x86_64?
> Date:	Mon, 07 Nov 2016 09:43:23 -0500
> ```
>
>> In GNU projects, we typically stop worrying about an underlying platform when its original supplier stops supporting it. For example, Emacs no longer worries about IRIX because SGI stopped supporting IRIX in 2013.
>
> In the GNU Project, the question that matters, for a system version of no particular importance to us (such as any version of Windows), is whether users care about that version enough to maintain support for it.  If they do that, we may as well not delete their code unless it is getting in the way rather badly.
>
> If we have no direct evidence about whether users care about a certain version, by default we can suppose that they won't care about a version that is no longer being maintained.  But that's not the criterion, just a default way to guess.
>
> Given that Windows is so widely used, and that so many users stick to old versions of it, it is plausible to me that millions of people still use Windows 98.  Maybe tens or hundreds of millions.
>
> That number may still be growing.  ISTR that even a few years ago people were still installing unauthorized copies of Windows 98 on PCs, because Microsoft made it harder to install subsequent Windows versions.  It would not surprise me if Windows 98 was installed on millions of new PCs this year.

*([Re: Windows emacs-25.1 i686 vs x86_64?](http://lists.gnu.org/archive/html/emacs-devel/2016-11/msg00193.html) より抜萃)*

.｡o( いまだにWindows 98を使ってるひとがEmacs最新版を使ったりするのかな… )

## そのほか

### [Using Emacs - 20 - yanking](http://cestlaz.github.io/posts/using-emacs-20-yanking/#.WCiijusl5Xe.reddit)

ヤンク(貼り付け)機能について。[Counsel](https://github.com/abo-abo/swiper)の`counsel-yank-pop`がべんりだよ、などなど。

### [nice looking light on dark theme](https://github.com/jimeh/birds-of-paradise-plus-theme.el) ([Reddit](https://www.reddit.com/r/emacs/comments/5cdjv9/nice_looking_light_on_dark_theme/))

[Birds of Paradise Light on Dark Sublime Text, Xcode Color Theme | Joe Bergantine](http://joebergantine.com/projects/color-schemes/birds-of-paradise/)の移植。

### [What would make Emacs News better?](https://www.reddit.com/r/emacs/comments/5ccrno/what_would_make_emacs_news_better/)

どうやったらEmacsの最新情報をいい感じにまとめられるかな？ って話。

### [Using Emacs - 19 - moving to a live config](http://cestlaz.github.io/posts/using-emacs-19-live/#.WCUI5mIjVdk.reddit) ([Reddit](https://www.reddit.com/r/emacs/comments/5cbax8/using_emacs_19_moving_to_a_live_config/))

メールアドレスとか個人情報設定みたいなやつの管理はどうしたらいいの？ って話。

### [My first emacs package! Detect conflicted copies of files in your Dropbox on open](https://github.com/jezcope/dropbox-conflicts-el) ([Reddit](https://www.reddit.com/r/emacs/comments/5c7o0l/my_first_emacs_package_detect_conflicted_copies/))

Dropboxでファイルの衝突を検出できるEmacs Lisp書いたよー ＼(^o^)／ って話。

### [Emacs Lisp Animations](http://dantorop.info/project/emacs-animation/)

Emacsで図形を描画したりアニメーションさせるテクニックについて。ジェネラティブアートの入門的な文脈らしい。

## 新作パッケージ

### [all-the-icons-dired](http://melpa.org/#/all-the-icons-dired): Shows icons for each file in dired mode

いままでありそでなかった、ファイルの種類ごとにアイコンを表示するやつ。

画像ではなくフォント依存なので、[all-the-icons.el/fonts at master · domtronn/all-the-icons.el](https://github.com/domtronn/all-the-icons.el/tree/master/fonts)から各種フォントをインストールの必要あり。

### [counsel-bbdb](http://melpa.org/#/counsel-bbdb): Quick search&amp;input email from BBDB based on ivy

[BBDB](https://www.emacswiki.org/emacs/CategoryBbdb)から検索したり、入力補完してくれるやつ(のIvy/Counsel版)。

### [csv](http://melpa.org/#/csv): Functions for reading and parsing CSV files.

CSVパーサ実装。先頭をヘッダとして解釈し、各行の要素を[連想リスト](https://www.gnu.org/software/emacs/manual/html_node/elisp/Association-Lists.html)で取得できる。

### [dante](http://melpa.org/#/dante): Development mode for Haskell

[Intero for Emacs](https://commercialhaskell.github.io/intero/)から派生したそうな。

### [darkane-theme](http://melpa.org/#/darkane-theme): A dark theme with strong colors

[andre-richter/emacs-lush-theme: A dark theme with strong colors for Emacs24](https://github.com/andre-richter/emacs-lush-theme)の派生。

### [emlib](http://melpa.org/#/emlib): A Machine Learning library for Emacs

[ニューラルネットワーク](https://ja.wikipedia.org/wiki/%E3%83%8B%E3%83%A5%E3%83%BC%E3%83%A9%E3%83%AB%E3%83%8D%E3%83%83%E3%83%88%E3%83%AF%E3%83%BC%E3%82%AF)のEmacs Lisp実装。…………おう、なるほど。

### [fluxus-mode](http://melpa.org/#/fluxus-mode): Major mode for interfacing with Fluxus

[Fluxus](http://www.pawfal.org/fluxus/)は3Dゲームエンジンらしい。

### [flycheck-demjsonlint](http://melpa.org/#/flycheck-demjsonlint): Flychecker for json-mode using jsonlint from demjson

Pythonの[demjson](https://github.com/dmeranda/demjson)を使ってJSONを検証するチェッカー。

### [flycheck-title](http://melpa.org/#/flycheck-title): show flycheck errors in the frame title

Flycheckの通知をタイトルバーに出して、エコーエリア(画面下部のメッセージが出てくる場所)を別の機能のために空けてくれる。

### [helm-bbdb](http://melpa.org/#/helm-bbdb): Helm interface for bbdb

[BBDB](https://www.emacswiki.org/emacs/CategoryBbdb)から検索したり、入力補完してくれるやつ(のHelm版)。

### [helm-youtube](http://melpa.org/#/helm-youtube): Query YouTube and play videos in your browser

EmacsからYouTube動画の検索と絞り込みができる。

### [projectile-git-autofetch](http://melpa.org/#/projectile-git-autofetch): automatically fetch git repositories

自動的にGitリポジトリをfetchしてくれるようにするやつ。

### [sudoku](http://melpa.org/#/sudoku): Simple sudoku game, can download puzzles

[数独](https://ja.wikipedia.org/wiki/%E6%95%B0%E7%8B%AC)(あるいはナンプレ)の実装。

### [web-mode-edit-element](http://melpa.org/#/web-mode-edit-element): Helper-functions for attribute- and element-handling

ParEditなどに触発されて、Web-modeを拡張するパッケージ。カーソル移動などは良いんだけど、編集機能はまだまだ検証が足りてなさげ。

### [whizzml-mode](http://melpa.org/#/whizzml-mode): Programming mode for editing WhizzML files

[WhizzML](https://bigml.com/whizzml)は機械学習用の[DSL](https://ja.wikipedia.org/wiki/%E3%83%89%E3%83%A1%E3%82%A4%E3%83%B3%E5%9B%BA%E6%9C%89%E8%A8%80%E8%AA%9E)らしい。