カテゴリー別アーカイブ: トラブル

visual-regexp-steroids がいつのまにか使えなくなった(emacs24.3)

emacsでPerl風の正規表現を使うやつ で導入して快適に使用していた visual-regexp-steroids 、いつのまにかエラーが出るようになっていた。

void-function pcre2el error

pcre2elは問題なくインストールされている。んんん…?
と思っていたら、ちょっと前にパッケージのアップグレードをした際にpcre2elがアップグレードされており、
その中で with-eval-after-load が使われていたのでした。。。

これ、どうやらemacs24.4から使えるマクロらしい。
私のemacsは24.3。うん、これが原因っぽい。

というわけでpcre2elをダウングレード。無事動くようになりました。
こういうことがあるからアップグレードの際は古いパッケージを消さずに残しておくべきですね。
(package.elでバージョン固定とかの管理がうまいことできればいいんだけどなー)
(というかそろそろemacs24.4を入れるべきか)

 

emmetにて展開時にindent-tabs-modeが効かない

zencoding-modeがいつのまにかemmet-modeに変わっていたようなので設定しなおした。

そしたらindent-tabs-modeがtになってるにもかかわらずなぜかインデントをタブ文字にしてくれない。
ググってみたけど古いバージョンの情報っぽいのしか見つからなかった。

Respect indent-tabs-mode · Issue #11 · smihica/emmet-mode · GitHub
Emacsのemmet-modeでindent-tabs-modeが効かない件について : GPG ralu-neko

結局emmet-indent関数を上書きして対応。

(use-package emmet-mode
  :config
  (add-hook 'web-mode-hook 'emmet-mode)
  (setq emmet-indentation 4)
  ;; indent-tabs-modeが効かないのを修正
  (defun emmet-indent (text)
    (if text
        (replace-regexp-in-string "\n" (concat "\n" "\t") (concat "\n" text))
      nil))
  :bind(("C-z" . emmet-expand-yas))
  )

最近use-package使い始めたけどいまいち書き方がわかってない。defunは:configに書くのであってるんだろうか。。。

 

org-mode: エクスポート時にエラー Invalid function: org-with-silent-modifications

org-mode をアップデートしたらエクスポート時に標題のエラー。
ググってみたところ下記のページを発見。

Org-Mode for GNU Emacs

You probably hit the famous ELPA installation bug, which is mentioned
early in the 8.0 release notes.

When installing from ELPA, please do so from a fresh Emacs session
where no Org function has been called.

If you still have the bug, please consider using the .tar.gz
distribution instead.

とのことなので一旦org-modeをアンインストール後、 emacs -q で素のemacsを立ち上げ、再インストール。
無事動くようになりました。

 

twittering-mode でエラー

Authorization failed: /usr/bin/curl exited abnormally (exit-status-60)

とか

twittering-oauth-get-access-token: Failed to retrieve a request token

とか出てつながらなくなった。

サーバーの証明書の問題?らしい。

(setq twittering-allow-insecure-server-cert t)

で証明書を検証しないようにしたら一応つながる。

 

cperl-init-faces (ignored): (void-function find-face)

cperl-mode をアップデート(Version: 20140309.122)したらシンタックスハイライトがなんだかおかしくなった。
whitespace-modeも効いていないようなので M-x whitespace-mode すると表題のエラー。

エラー内容でググると古い情報が引っ掛かった
http://www.ysnb.net/meadow/meadow-users-jp/2001/msg00716.html
ためしにcperl-mode.el をひらいてバイトコンパイルしてみるとあっさりと解決。なんぞこれ。

 

web-modeでハイライトがうまくいかない

web-modeでphpとhtmlの混合ファイルを開くと、global-font-lock がオンになっているにもかかわらずハイライトが消える。
ここで M-x font-lock-mode すると、font-lock が disable になったうえで、なぜかコードに色がつき、whitespace-modeで色付けしていた空白の色が消える。

調べてみると、どうも whitespace-mode と web-mode の相性が悪いらしい。
Syntax highlighting vanishing · Issue #119 · fxbois/web-mode · GitHub
Incorrect syntax highlighting · Issue #18 · fxbois/web-mode · GitHub

うーん。global-whitespace-mode は切りたくないんだよなあ。なんかうまい方法ないものか。

 ***

php,html.js なんかが入り混じったファイルの編集と言えば昔ながらのmmm-modeとかありますが、
今ではいろいろ選択肢が増えてるらしい。
EmacsWiki: Multiple Modes
mumamoっていうのもよく聞くけど使ったことないなあ。

web-mode だと html-mode の各種機能が使えないのが不便だったりするし、
やっぱり素直にmmm系使った方がいいのか。
暇なときにいろいろ使い比べてみたい。
どっかに比較記事落ちてないかなあ。

 

emacs24.3 で Tramp が使えない

「Couldn’t find a proper `ls’ command」というエラーが出る場合の対処法。

trampのバグらしい。

1.lisp/net/tramp-sh.el を再コンパイルする。
(2.M-x tramp-cleanup-all-connections を実行)
3.~/.emacs.d/tramp を削除
4.emacs再起動

これでOK。

#14030 – 24.3; expand-file-name expands remote file name on Windows incorrectly – GNU bug report logs
Emacs 24.3 for windows, Tramp byte-code: Couldn’t find a proper `ls’ command – Stack Overflow

 

emacs24.3 で SKK が起動しない

「face-equal: Invalid face: modeline」というエラーが出る場合の対処法。

最新版のddskkを入れると解決。

面倒な場合はskk.elの
(skk-face-proportional-p ‘modeline)

(skk-face-proportional-p ‘mode-line)
に書き換えても動くらしい。

face名 modelineが削除されたことによるエラーとworkaround
Emacs 24.3.1 で ddskk 14.3 が使えなくなった – Elliptium

 

HTMLファイルが意図しない文字コードで保存される問題とか、その他文字コード関連

METAタグで「charset=”Shift_JIS”」とかなっていると、ファイルの文字コードを手動で変更しても勝手にSJISで保存されてしまう。なんでやねん。

(setq auto-coding-functions nil)

で解決。

 ***

ついでに文字コードまわりの操作備忘録

・現在開いているファイルの文字コードを変更する
→ C-x RET f

・現在開いているファイルを、文字コード指定して開きなおす
→ C-x RET r

忘れがちなので関数化しとくと楽かも。

・現在開いているファイルをUTF8として保存

(defun save-as-utf8()
(interactive)
(set-buffer-file-coding-system 'utf-8-unix)
(save-buffer))

・現在開いているファイルをUTF8として開きなおす

(defun find-file-utf8 ()
(interactive)
(let ((coding-system-for-read 'utf-8-unix)
(coding-system-for-write 'utf-8-unix))
(call-interactively 'find-alternate-file)))