dak ブログ

python、rubyなどのプログラミング、MySQL、サーバーの設定などの備忘録。レゴの写真も。

emacs で undefined symbol: wl_proxy_marshal_flags エラー

2023-07-25 11:41:18 | emacs
色々なパッケージをアップデートしていたら、いつのまにか emacs を起動すると、以下のエラーが表示されるようになっていました。
emacs: symbol lookup error: /lib64/libWPEBackend-fdo-1.0.so.1: undefined symbol: wl_proxy_marshal_flags

上記の対策として、libwayland のパッケージをアップデートしました。
$ rpm -qa | grep libway
libwayland-egl-1.19.0-1.el8.x86_64
libwayland-client-1.19.0-1.el8.x86_64
libwayland-server-1.19.0-1.el8.x86_64
libwayland-cursor-1.19.0-1.el8.x86_64

$ sudo yum update libwayland-egl libwayland-client libwayland-server libwayland-cursor

libwayland をアップデートしたことで、emacs のエラーは解消されました。

emacs で Typescript を Javascript モードにする

2021-10-27 00:43:03 | emacs
emacs で Typescript を javascript モードにする方法のメモ。
.emacs に以下を記述します。
以下の設定では TAB を 2 文字分にしています。
(add-to-list 'auto-mode-alist '("\\.ts\\'" . javascript-mode))
(add-hook 'js-mode-hook
          (lambda ()
            (make-local-variable 'js-indent-level)
            (setq js-indent-level 2)))


VSCode での emacs のキーバインディング

2021-10-21 20:14:25 | emacs
Windows 版の VSCode を emacs のキーバインディングにする方法のメモ。

[1] VSCode で拡張機能の Awesome Emacs Keymap (emacs-mcx) を追加します。

[2] ESC キーを Meta として使えるようにするために、json の設定ファイルに設定を追加します。
    設定ファイル: c:\Users\{ユーザ名}\AppData\Roaming\Code\User\settings.json
    追加内容: "emacs-mcx.useMetaPrefixEscape": true


emacs の拡張子によるモード判定の設定方法

2018-12-01 12:07:49 | emacs
emacs の拡張子によるモード判定の設定方法のメモ。

cython のファイルの拡張子を pyx にしていると、
emacs で自動で python モードにならなかったため、
以下を .emacs に設定しました。

(add-to-list 'auto-mode-alist '("\\.pyx\\'" . python-mode))


M-x python-mode で手動で変更もできますが、毎回は面倒ですし、
変更し忘れると、cython で "Mixed use of tabs and spaces" の
エラーがでることが多いので。

emacsでプログラムのインデントを整形

2011-01-31 22:42:50 | emacs
emacsで、ある領域全体のインデントをやり直す方法です。

領域を指定して、M-x indent-region とすると、指定領域全体のインデントを調整してくれます。
インデント対象の開始行は Ctrl-スペース で指定し、終了行はカーソルを移動するだけです(カーソル位置の一行上が終了行になります)。

今までは左手小指で Ctrl を押しながら、右手で i(インデント調整)と n(次行への移動)を連打していました。。。

script タグで json

2007-02-10 23:24:25 | emacs
サーバと通信すると、同一のドメインのサーバに限定されてしまいますが、script タグなら他ドメインのサーバの JavaScript を読み込むことができます。
動的に script タグを生成して JSON 形式のデータを読み込めば、ドメインを意識せずに ajax を実現できます。

script タグで script オブジェクトを生成しておいて、
<script id="..."></script>
動的に script タグを生成して、この script オブジェクトを新しい script オブジェクトに置換します。

var new_script = document.createElement("script");
new_script.id = script_id;
var script.parentNode.insertBefore(new_script, script);
script.parentNode.removeChild(script);
script = news_script;
script.src = url;

サーバが返すデータは以下のような JavaScript の代入文です。
data = ...;

データに日本語などマルチバイトの文字が含まれる場合には、これらの文字列を uXXXX のように Unicode の文字コードにエンコードしておくと文字化けしません。

それから、script.src = url を実行してから実際にサーバのデータを読み込むには少し時間がかかります。
Firefox の場合には script に onload イベントを指定することができますが、IE の場合には onload イベントが使えないようです。
そのため IE ならデータがダウンロードされたかをチェックする関数を作成して、データがダウンロードされたら次の処理を実行するようにする必要があります。
それにはサーバから返される json オブジェクトが、リクエストしたデータと一致しているかをチェックできるようにしとくとよいでしょう。

setTimeout("wait_json()", interval);

function wait_json() {
if (json データがダウンロードされていたら) {
{次の処理};
}
else {
setTimeout('wait_json()', interval);
}
}

iffame で読み込まれた html を参照する方法

2007-02-03 23:46:29 | emacs
iframe で読み込まれた html を親ページの JavaScript で参照するには、contentWindow を使います。


<iframe id="iframe_id" src="child.html"></ifrmae>

上記のタグで child.html を読み込んでいる場合、親ページから child.html のソースは以下のようにして参照します。

document.getElementById("iframe_id").contentWindow.document.body.innerHTML


emacs 21 で UTF-8

2007-01-21 20:21:29 | emacs
ruby で UTF-8 のデータを処理する必要があって、プログラム自体を UTF-8 で書きたかったので、emacs 21 で UTF-8 を読み書きする方法を調べてみました。

emacs 21 で UTF-8 を扱うには、Mule-UCS をインストールします。
でも Mule-UCS を単体でインストールしただけでは、emacs の起動が遅くなるとのことですので、patch をあててからインストールします。

・Mule-UCS-0.84.tar.gz
http://unit.aist.go.jp/itri/itri-gist/ftp.m17n.org/
・mule-ucs-emacs-21.2.patch
http://pop-club.hp.infoseek.co.jp/unix/mule-ucs-emacs-21.2.patch

インストールは以下のように行います。

まず Mule-UCS を解凍。
% gtar zxvf Mule-UCS-0.84.tar.gz

Mule-UCS-0.84/lisp ディレクトリに patch をコピー。
% cd Mule-UCS-0.84/lisp
% cp {patch のディレクトリ}/mule-ucs-emacs-21.2.patch .

patch をあてる。
% patch <mule-ucs-emacs-21.2.patch コンパイル。
% cd ..
% emacs -batch -l mule-comp.el

.emacs に Mule-UCS を読み込むように以下を記述。
(setq load-path (cons ".../Mule-UCS-0.84/lisp" load-path))
(require 'un-define)


Mule-UCS が正しくインストールされたかを確認するために、UTF-8 のファイルを作成してみます。
UTF-8 でファイルを保存するには、C-x C-m c で

Coding system for following command (default, euc-jp-unix):

と表示されたところで、utf-8 と入力すると、

Command to execute with utf-8:

コマンドの入力を求められるので、C-x C-w でファイル名を入力して保存します。

同様にファイルのエンコーディングを指定してファイルを読み込みたいときには、コマンドを入力するところで、C-x C-f でファイル名を入力します。