Evil使いのelispデバッグ風景

( ´_ゝ`)ノシ

yoshitiaです。

この記事はEvil Advent Calendar 2014の7日目の記事になります。

先日、web-modeで出てくる

File mode specification error: (void-variable web-mode-html-offset)

の対処ですが、

emacs: web-mode のインデント設定が効かない - yoshitia’s diary

よりまともなやり方が見つかったので記事にします。

 

対処法

私の場合、highlight-indentation-modeが原因でした。

highlight-indentation-modeはメジャーモードがweb-modeの時に

変数web-mode-html-offsetを参照する仕様になってるっぽいので

highlight-indentation.elを直接開いて

web-mode-html-offset

(web-modeの古いバージョンで使われていた変数)

を検索、

web-mode-markup-indent-offset

(web-modeの新しいバージョンで使われていた関数)

に書き換えれば解決します。

 

対処法を探したやり方

ここからが本題。

結果としてweb-mode自体が原因でなかったので

どれが原因かを探す方法が必要だと思うので書いておきます。

emacsネイティブ?の方には常識かもですが

M-x backtrace
(普通よりエラーを詳しく表示してくれる関数)

を入力してからhtmlなどを開いて

メジャーモードをweb-modeに切り替えます。

すると同じ

(void-variable web-mode-html-offset)

メッセージが出てきますが手前の部分に

エラーが発生してるモードが表示されます。

私の例の様にhighlight-indentation-modeでなくても

問題のモードのファイルを開いて

web-mode-html-offset

を検索して見つけた部分を書き直せば

多分解決するんじゃないかと。

この記事のEvil要素は?

( ´_ゝ`)

インデント設定効いてないと

Evilでの操作、

i<TAB><down><ESC>

の後のドットコマンドが役に立たないのです。

(Vim ドットコマンドで調べると便利)

後はVimEmacs Evilルートの方に

M-x backtraceの存在を知ってもらえれば、

と言う意図で。

elispプラグインは関数や変数の頭に

プラグインの名前が付いてるのですごくわかりやすいです。

これでVimmerelispと戦える(はず)です。

 

日々の暮らしにVimEmacsをEvilを。 Happy Evil life!

emacs: web-mode のインデント設定が効かない

( ´_ゝ`)ノシ

yoshitiaです。

Evil使いのelispデバッグ風景 あらすじ - yoshitia’s diary

昨日、Evil Advent Calenderの前フリとして特に

ブックマークやtwitterのツイートをしてないのに

見てくださった方が居たので

デバッグと言うか応急処置みたいなものを書きます。

3/28追記 ちゃんとした対処法見つけました。

Evil使いのelispデバッグ風景 - yoshitia’s diary

 

対象:web-mode.el内に Version: 11.0.29 って書いてあるもの

package-list-packagesでならフォルダ名に

Package-Version: 20150321.1140  とかついてるもの

github.com

 

不具合対策:

web-mode.el内の47行目以降、

defcustomがやたら沢山ある辺りに

(defcustom web-mode-html-offset 1
  ""
  :type 'integer
  :group 'web-mode)

と書いて保存すると

File mode specification error: (void-variable web-mode-html-offset)

のエラーが消えてインデント設定が効くようになる。

場当たり的な対策なので完全に不具合解消してるかは謎。

もっといい対策があったらはてブにでもコメント下さい。

Evil使いのelispデバッグ風景 あらすじ

2015/3/26追記

対処法は以下の記事にあります。

emacs: web-mode のインデント設定が効かない - yoshitia’s diary

 

 

( ´_ゝ`)  JSF2.2書くならweb-modeが良いか・・・

jsp対応してるらしいし。

 

・・・ん?

f:id:yoshitia:20150325212328p:plain

 

    File mode specification error: (void-variable web-mode-html-offset)

何このエラー?あ・・・

f:id:yoshitia:20150325213155p:plain

インデント設定機能しなくなった\(^o^)/オワタ

 

「そこで問題だ!この壊れたインデント設定をどうするか?

 3択—ひとつだけ選びなさい。

 答え1.ハンサム( ´_ゝ`)は突如解決策がひらめく。

 答え2.通りすがりのギッハバが不具合を修正したプルリク

 →プラグイン作者が即マージで問題解決してくれる。  

 答え3.どうしようもない。現実は非情である。  

 答えは-」

 

    
                                 ,.へ 
  ___                             ム  i 
 「 ヒ_i〉                            ゝ 〈 
 ト ノ                           iニ(() 
 i  {              ____           |  ヽ 
 i  i           /__,  , ‐-\           i   } 
 |   i         /(●)   ( ● )\       {、  λ 
 ト-┤.      /    (__人__)    \    ,ノ  ̄ ,! 
 i   ゝ、_     |     ´ ̄`       | ,. '´ハ   ,! 
. ヽ、    `` 、,__\              /" \  ヽ/ 
   \ノ ノ   ハ ̄r/:::r―--―/::7   ノ    / 
       ヽ.      ヽ::〈; . '::. :' |::/   /   ,. " 
        `ー 、    \ヽ::. ;:::|/     r'" 
     / ̄二二二二二二二二二二二二二二二二ヽ 
     | 答 |  答え4. 自分で何とかする │| 
     \_二二二二二二二二二二二二二二二二ノ 

VimやEmacsを始める前に(windows向け)

( ´_ゝ`)ノシ

yoshitiaです。近年は4月が近づくと

VimEmacsをはじめよう、と言った趣旨の記事が

出るようですが、

windowsの人向けに

新しいテキストエディタを始める前に

やっておくことを書いてみようかと。

 

テキストエディタを全く使った事無い方

sakura-editor.sourceforge.net

サクラエディタから始めましょう。

と言うのは大抵新しいテキストエディタを勧める記事は

「使いこなせたらすごいエディタ」を紹介します。

 

そういうのは設定やプラグイン設定をミスると

起動からエラー出て使えない事態が起きることがあります。

 

時間に追われてない方であればそれでもいいと思いますが

もし、windows使ってて新しいエディタを

仕事で使う、論文・レポートを書く用途で使おうとするなら

設定でトラブル起きた時に使える

サブのエディタを用意した方が良いです。

 

サクラエディタ

-------------------------------------------

保存、コピー、カット、ペースト、Ctrl+z

矩形選択、検索、置換、文字コード変換、改行コード変換

grep、ソート、マージ、diff

------------------------------------------

上記の1行目2行目辺りを覚えてから

他のエディタに移ると身に付くのも早いと思います。

(3行目は人による)

 

サクラエディタはここに書いた以外にも機能沢山あるので

そのまま安住の地に選択するのもアリです。

2015/4/12追記:

サクラエディタ、タイプ別設定で「括弧の強調表示」設定が可能だった。

プログラム書く時に{ ( [が沢山あってもどの] ) }と対応してるかわかるから楽。

サクラエディタで、対応する括弧を探す。 - 今日の3タックル

 

すでに良く使うテキストエディタがある方

もし苦手ならタッチタイピングを鍛えなおした方がいいかもです。

「使いこなすとすごいエディタ」の類は

「キーボードショートカットを沢山使うエディタ」だったりします。

必然的にキーを見ないでも使えることが求められます。

使うエディタの種類は置いておいても

タイピングの速さは作業速度に繋がるので鍛えて損はありません。

 

もし、定型の文章を沢山コピー&ペーストすることが多いなら

PraseExpressをおすすめします。

yossense.com

タッチタイピング、PraseExpressでの改善を試みても

その先を、という方なら新しいエディタを始めるのはいいと思います。

 

 

春から幸せなテキストエディタライフを送りたいですね。

Happy Vim and Emacs life!

VirtualBoxでArch linux

( ´_ゝ`)ノシ

yoshitiaです。

最近Javaの再学習始めてJSF2便利さを感じてます。

以前学習した時のテキストより3年新しいものですが

IDE、JSF2ともに前回使ったIDEjsp+Javaサーブレットより

かなり進歩してる気がします。

 

本題。


開発環境としてのデスクトップLinuxのススメ - 今日学んだこと

 

この記事を見てホイホイ環境構築しました。

Windows 8.1 64bit + VirtualBox + Arch Linux + Mate

Vagrantの扱い覚えようとしてハマったまま放置してた

VirtualBoxの再利用、素晴らしいですね。

 

同じような記事を書いてる方たくさんいらっしゃるので

検索のワードに使えそうな単語だけ並べます。

2015年3月現在

仮想マシンの設定

cpuコア 1

ram      3GB

データ領域 128GB

パーティション  gdiskコマンド使った

ブートローダ  EFI  (このあたりはハマる)

パッケージマネージャ   pacman  (ムチャクチャ使う)

GUIのグラフィック関係のもの  lightdm-gtk-greeter

※gtk2とかgtk3もこれに入ってる。

 

Virtualbox用グラフィックのドライバ      ○ fbdev × vesa

※PC本体が2014年購入のNVIDIAの新しめのものなのでvesaでは

対応してなかった

キーボードやマウスとか  xf86-input-mouse xf86-input-keyboard edev

GUI環境   MATE Xorg

設定したファイル(多分もっとある) .xinitrc .xprofile

xorg.confファイル作るときに使ったコマンド(設定ファイル生成してくれる)

# Xorg -configure

日本語入力  ibusを使用(他にもmozcとかfcitxとかある)

 

日本語化までは終わらせました。

快適さ加減で言うと、この記事をArch Linux上で書いてます。

VirtualBoxからの起動がちょっと重いブラウザ程度なので速すぎ。

ただ、仮想環境と1コア設定だからなのか半角/全角切り替え

で見た目は動いてる用に見えて裏の動きが追いついてない感じがありますが

1コアとしてはこれ以上ゼイタク言ったらバチが当たると納得するレベルの

快適さです。

 

少しずつ手を入れてVimEmacsXmonad・・・楽しくなりそうです。

Land of Lisp でハマったこと その2

( ´_ゝ`)ノシ

yoshitiaです。

land of lisp もdice of doom v2辺りです。

 

本題。

環境 windows 8.1 64bit Gnu Clisp-2.49

webserver.lispでserve関数がsocket通信できないorz

socketをquicklispのusocketに変えても駄目っぽい。


land-of-lisp/http.lisp at master · kofno/land-of-lisp · GitHub

失敗時に出てくるメッセージは

*** - Winsock error 10013 (EACCES): Permission denied

windowsのソケット通信を行うdll辺りで止められてるっぽい。

 

原著でも2010年辺りに出てるのでsocketやusocketが古いってことは

ないと思いますがwindows8辺りでwindowsのソケット通信回りが変わったのかな?(dllファイルもwinsock.dllじゃなくて

winsockac.dll?のようなファイル名だった)

 

windowsファイアウォールやウィルス対策ソフトの例外処理とかやっても変わらず。

land of lispでどうしてもweb関連について学びたいわけではないのでその辺はスルーすることに決定。

 

多分webserver.lispのようなプログラムを作って動かすって話ならCやJavaRubyPython・・・と他の言語でもあるので無理に頑張ることはないです。

linuxmacなら動くんだろうなぁ・・・

Land of Lisp でハマったこと

( ´_ゝ`)ノシ

yoshitiaです。

2015年に入ってからLand of LispCommon Lispを始めて

ますますVimからEvilへの比重が高くなってます。

 

本題。

Land of Lisp の7章あたりでextパッケージを使うコードが出てくるのですが

Clozure Common Lispを使ってると

extパッケージが存在しないのが原因でエラー出ます。

環境はwindows 8.1 64bit  ccl-1.10-windowsx86.zip

(もしかしたら設定とかパッケージ導入法などあるかもしれませんが

私のgoogle検索力や英語力では見つかりませんでしたorz)

 

回避方法としてGnu Clisp-2.49の

windowsバイナリに処理系変更しました。

設定後、REPLで

(ext:shell)

を入力してコマンドプロンプト起動時メッセージ出てきたら

extパッケージ入ってます。

slime側で上手くいかない場合は環境変数pathにclispのパス通すと

上手くいったりします。

 

他にもハマったこと出来たら追記すると思います。

 

早速追記:

エラーにwide characterとか書かれてたら

多分日本語等のマルチバイト文字が原因。

; コメントでも引っかかるのは予想外だった。

そのうち日本語対応の設定探そう。

 

2/23 Gnu Clispのバージョンを追記。