なんとな~くしあわせ?の日記

「そしてそれゆえ、知識そのものが力である」 (Nam et ipsa scientia potestas est.) 〜 フランシス・ベーコン

Debian wheezy with EmacsでD言語書く

表題通り、息抜きで他の言語に浮気してもいいよね

Debian(Wheezy)のEmacs環境

stableだとemacs24が入っていないようなので、無理せずemacs23を使う

apt-cache search emacs23

cowgirl:~# apt-cache search emacs23
haml-elisp - Emacs Lisp mode for the Haml markup language
mh-e - Emacs interface to the MH mail system
sass-elisp - Emacs Lisp mode for the Sass markup language
emacs23 - GNU Emacs エディタ (GTK+ ユーザインターフェイスを使用)
emacs23-bin-common - GNU Emacs エディタのアーキテクチャ依存な共有ファイル
emacs23-common - GNU Emacs エディタのアーキテクチャ非依存な共有インフラストラクチャ
emacs23-el - GNU Emacs Lisp (.el) ファイル
emacs23-lucid - GNU Emacs エディタ
emacs23-nox - GNU Emacs エディタ (X 対応無し)
emacs23-common-non-dfsg - GNU Emacs shared, architecture independent, non-DFSG items

apt-cache search emacs24

cowgirl:~# apt-cache search emacs24
emacs24-common-non-dfsg - GNU Emacs common non-DFSG items, including the core documentation

Emacsにpackage.elをインストール

この辺を参考にさせていただいた
Emacsでプラグインを簡単にインストールするためのpackage.elを使ってみる - ブログのおんがえし
Emacs で始める D言語! - Qiita
cannot load cl-lib at emacs startup - Stack Overflow

手順1(※Emacsにauto-installは入っている前提)
// とりあえずGDC(D言語のコンパイラを入れておく)
# apt-get install gdc

// emacs23にはcl-libが入っていないので手動で入れる
// Emacs上で以下のようにして、ソースが入ったらC-c
$ auto-install-from-url: https://raw.github.com/emacsmirror/cl-lib/master/cl-lib.el

// 以下の文字列をスクラッチバッファでC-jして評価、うまいことはいったらC-c(elispをコンパイル&インストール)
(auto-install-from-url "http://repo.or.cz/w/emacs.git/blob_plain/1a0a666f941c99882093d7bd08ced15033bc3f0c:/lisp/emacs-lisp/package.el")
手順2

melpaに関しては以下に簡単な使い方があるのでそれに従う
milkypostman/melpa · GitHub

.emacsと.init.elはほとんど同じものと聞くので.emacsに書いてみる、こんな感じ

;; 大体この辺が.emacsの先頭

;; auto-install
(require 'auto-install)
(auto-install-update-emacswiki-package-name t)
(auto-install-compatibility-setup)
(add-to-list 'load-path "~/.emacs.d/auto-install")

; Add package-archives
(require 'package)
(add-to-list 'package-archives '("melpa" . "http://melpa.milkbox.net/packages/") t)
(add-to-list 'package-archives '("marmalade" . "http://marmalade-repo.org/packages/"))
; Initialize
(package-initialize)
(when (< emacs-major-version 24)
  ;; For important compatibility libraries like cl-lib
  (add-to-list 'package-archives '("gnu" . "http://elpa.gnu.org/packages/")))
(package-initialize)

大体これで'M-x package-list-packages'が動くので'M-x package-install d-mode'する。

情報収集

プログラミング関連でなにか事を始める時は、はてブで対象のキーワードを検索してブックマーク数の多いものから順に物色していくと便利じゃぞ。

最近のよくある流れ

  1. 日本語サイト調査(はてブはてなダイアリー、その他ブログ)
  2. StackOverflow
  3. 海外メーリングリスト
  4. ソースコード

ソースコードまで調べてわからない場合メーリングリストに質問を投げる。。。

本も買ってみた

ちょっと流し読みした感じだと、C++で困難な部分が解決されているように見えなくもない(解決されているとは言っていない)。文法に関してはJavaC++とあまり変わらないので脳みそが楽な印象。

プログラミング言語D

プログラミング言語D

ライブラリ管理(DUB)

実用的言語にはライブラリが伴う。
yum, apt, easy_install, pear, cpan, mavenみたいなやつがD言語にもある。

パッケージ一覧
Package list - DUB registry

バイナリ
Download - DUB registry

Debian使いはここから
d-apt - APT repository for D

第 83 回 関西 Debian 勉強会に参加した

表題通り、関西Debian勉強会に参加してきた。
ちなみに今月で私がプログラミング始めて丸3年、Debian使いだして丸1年になる(だからどうというわけではないが)。Debian使い始めたのはつい最近な気がしていたがもう1年経ったらしい…
メインPCをDebianに移行した - なんとな~くしあわせ?の日記

第 83 回 関西 Debian 勉強会
KansaiDebianMeeting/20140427 - Debian Wiki

発表の内容とか

自宅サーバkvmを導入してみよう (担当:川江さん)

自宅サーバーにKVMを使うお話
KVM使ったことなかったので勉強になった、仕事でも使えそう
(※ちょうど複数ethをもったデバイスをいくつもエミュレートするような必要があった)
・SPICEというやつがすごいらしい
・サーバを外部公開するときは気をつけて…

Notmuch Mail (担当: David Bremnerさん)

・大学の先生かつnotmuchの開発者さんでした、すごい
・notmuchはEmacsと連携して使うようなメールクライアント補助ソフトウェアみたいだ
・やはりEmacsはいいものだ
Gmailみたいなタグ付けをできたりする
・内部でThe Xapian Projectを使っている、C++、日本語も使える(UTF-8)

その他

Debianプロジェクトに参加する方法など教えていただいた、皆様ありがとうございました。
・まずはITP、そのあとBTS...
・あとGPG Key Sign!自分は何も用意してなかったぜ

このへんに用語がまとまっているようだ
Debian JP Project - 略語の解説

ドザーのためのEmacs設定

仕事でも趣味でもeclipseを使う生活が続き

Emacsなんてだっせーよな! 家に帰ってeclipseやろーぜ!」

状態な私ですが、ようやくHackersを読了してハッカー精神を取り戻したのをきっかけにemacsを久しぶりに設定したくなってきました。ついでに言うとあまりにも長引くコーディング作業に飽きが生じてきまして、気分を変えるためにemacsを使います。いつもeclipse使ってたらつまんない、けどもeclipseぐらい便利じゃないとイヤン。

とりあえず流れ

MinGW/MSYS環境は揃えているものとする

1,NTEmacsをダウンロードしてくる
とりあえずNTEmacsの23.4をダウンロードする。Cドライブ直下だとMinGWからいじりやすい。
(もっと新しいのでもいいかも)
GNU Emacs - GNU Project - Free Software Foundation (FSF)

基本的にソースコードUTF-8で統一することとする。.emacsに以下の設定を追加。
ネットの海で拾ってきた設定ばかりなので誰が元ネタかわからない。

;; どうせ後で必要なので
(require 'cl)

;; ウィンドウサイズの設定
;; 最大化する命令の定義
(defvar w32-window-state nil)

(defun w32-fullscreen-switch-frame ()
  (interactive)
  (setq w32-window-state (not w32-window-state))
  (if w32-window-state
      (w32-fullscreen-restore-frame)
    (w32-fullscreen-maximize-frame)
    ))

(defun w32-fullscreen-maximize-frame ()
  "Maximize the current frame (windows only)"
  (interactive)
  (w32-send-sys-command 61488))

(defun w32-fullscreen-restore-frame ()
  "Restore a minimized/maximized frame (windows only)"
  (interactive)
  (w32-send-sys-command 61728))

(add-hook 'window-setup-hook
          '(lambda () (w32-fullscreen-maximize-frame))
          )


;; フォント設定 osakaの等倍(※フォントは人によって違うと思うので変えよう)
(add-to-list 'default-frame-alist
             '(font . "-outline-Osaka-等幅-normal-normal-normal-mono-16-*-*-*-c-*-iso8859-1"))
;; UTF-8でソースを書くための設定 Setenv
(setenv "LANG" "ja_JP.UTF-8")

;; 言語環境
(set-language-environment "Japanese")

;; 文字コード
(set-language-environment "japanese")
(prefer-coding-system 'utf-8)
(set-terminal-coding-system 'utf-8)
(set-keyboard-coding-system 'utf-8)
(set-buffer-file-coding-system 'utf-8)
(set-default-coding-systems 'utf-8)

;; Shell Mode
;; MSYS の bash を使用します(msys-1.0.16とかになってるけど、普通は1.0だと思う)
(setq explicit-shell-file-name "c:/MinGW/msys-1.0.16/bin/bash.exe")
(setq shell-file-name "c:/MinGW/msys-1.0.16/bin/sh.exe")
;; SHELL で ^M が付く場合は ^M を削除します。
(add-hook 'shell-mode-hook
	  (lambda ()
	    (set-buffer-process-coding-system 'undecided-dos 'sjis-unix)))
;; shell-mode での保管(for drive letter)
(setq shell-file-name-chars "~/A-Za-z0-9_^$!#%&{}@`'.,:()-")

;; Grep
(defadvice grep (around grep-coding-setup activate)
  (let ((coding-system-for-read 'utf-8))
    ad-do-it))

(setq grep-find-command "find . ! -name '*~' -type f -print0 | xargs -0 lgrep -n -Au8 -Ia ")

;; バックアップを残さない
(setq make-backup-files nil)

2,slimeとCLISPを用意する
lispの対話環境とC言語と直結したLispを用意する(これでLispの世界だけじゃなくてC言語の世界にも出られる…Lisp使ってねーけどな!)

slimeは以下からCVS使って~/.emacs.d/以下に落としてくる
SLIME: The Superior Lisp Interaction Mode for Emacs

$ cd /c/Users/hogehoge/AppData/Roaming/.emacs.d/
$ cvs -d :pserver:anonymous:anonymous@common-lisp.net:/project/slime/cvsroot co slime

CLISPはここからダウンロードする
CLISP - an ANSI Common Lisp Implementation

CLISPMinGWでビルドしたいという奇特な方は以下のエントリをご覧ください
CLISP + msys + mintty - なんとな~くしあわせ?の日記

そして以下の設定を.emacsに追加

;; slime
(setq load-path (cons (expand-file-name "~/.emacs.d/slime") load-path))

;; Lisp用にSLIMEの設定
;; lisp-mode
(setq inferior-lisp-program "clisp")    ; clisp用

(require 'slime)
(slime-setup)

3、auto-installを用意する

MSYSから

$ mkdir ~/.emacs.d/auto-install
$ cd ~/.emacs.d/auto-install
$ wget http://www.emacswiki.org/emacs/download/auto-install.el

# .profileに「alias emacs='/c/emacs-23.4/bin/emacs.exe'」とか追加しておく
$ emacs --batch -Q -f batch-byte-compile auto-install.el

=

;; auto-install
(add-to-list 'load-path "~/.emacs.d/auto-install")
(require 'auto-install)
(auto-install-update-emacswiki-package-name t)
(auto-install-compatibility-setup)
(setq ediff-window-setup-function 'ediff-setup-windows-plain)

4,タブ表示・リドゥ設定・カラーテーマ

タブ表示はかなり便利です。eclipseみたい。
参考になりました:うわっ...私のEmacs、使いにくすぎ?だったら...カスタマイズシヤッセー!!ダァダァシエリイェッスッシェーショーヘイヘイ!!! - 三等兵

;; タブを使う
;; http://www.emacswiki.org/emacs/tabbar.el
(require 'tabbar)
(global-set-key [(control shift tab)] 'tabbar-backward)
(global-set-key [(control tab)]       'tabbar-forward)
(tabbar-mode)

;; リドゥー設定
;; redoできるようにする
;; http://www.emacswiki.org/emacs/redo+.el
(when (require 'redo+ nil t)
  (define-key global-map (kbd "C-z") 'redo))

;; Emacsのカラーテーマ
;; http://code.google.com/p/gnuemacscolorthemetest/
(add-to-list 'load-path "~/.emacs.d/color-theme-6.6.0")
(when (and (require 'color-theme nil t) (window-system))
  (color-theme-initialize)
  (color-theme-renegade))

5,ECB

参考になりました:Emacs Code Browser(ECB)を入れてみた。 - てつじんにっき

$ cd ~/.emacs.d
$ wget http://jaist.dl.sourceforge.net/sourceforge/ecb/ecb-2.40.tar.gz
$ wget http://nchc.dl.sourceforge.net/sourceforge/cedet/cedet-1.0.1.tar.gz
# 展開
$ tar xvf ecb-2.40.tar.gz
$ tar xvf cedet-1.0.1.tar.gz
# コンパイル
$ cd cedet-1.0.1
$ make EMACS=/c/emacs-23.4/bin/emacs.exe
$ cd ../ecb-2.32
$ make EMACS=/c/emacs-23.4/bin/emacs.exe CEDET=../cedet-1.0.1

※ この時emacsが元からもっているCEDETのフォルダは削除しなければ競合が起こったと思います(\elisp以下のだったと記憶)

;; CEDET, ECB用の設定
;; ECBをロードするための設定
(add-to-list 'load-path "~/.emacs.d/ecb-2.40")
(load-file "~/.emacs.d/cedet-1.0.1/common/cedet.el")
(require 'ecb)

6,auto-complete

auto-installでちゃっちゃとインストールしちゃいましょう

;; auto-complete
(add-to-list 'load-path "~/.emacs.d/")
(require 'auto-complete-config)
(global-auto-complete-mode t)
(add-to-list 'ac-dictionary-directories "~/.emacs.d/ac-dict")
(ac-config-default)

7、背景半透明

参考になりました:背景を半透明にする - goryugo

;; 背景を半透明にする
(setq default-frame-alist
      (append (list
               '(alpha . (90 85))
               ) default-frame-alist))



完成図
f:id:panzer-jagdironscrap1:20120912002535j:plain