X



【GNU】Emacs Lisp 【Elisp】
0196183
垢版 |
2015/03/18(水) 12:55:18.82ID:nZSu0bqF
>>192
もし、面倒でなければ「symbol-property-listでの力技」っていうのも見てみたいです。

thunk の例示ありがとうございます。python でも高階関数を使わないわけではなく、
lambda で評価を遅延させるようなことも時々はやるのですが、
必要に応じて関数の引数で使うという発想は無かったです。私にとって新しい概念です。
新しい言語を勉強すると、元の言語でも世界が広がる良い例ですね。楽しいです。

C/C++ ですが、最近の C では、可変引数マクロが使えるので、
#define TRACE(cond,...) if(cond){ printf(__VA_ARGS__); }
とすることで、引数を制御構造に組替えられます。
http://codepad.org/uX2WaTqT

この実現の仕方は elisp での defmacro に近いですね。

C++ の lambda も上手く例が作れれば後程。
0197183
垢版 |
2015/03/18(水) 12:56:45.43ID:nZSu0bqF
>>193
あんまり lisp っぽくないですかね。
Python など、他のパラダイムが強い言語で関数チックに
書こうとすると、写像できるような要素は便利なので良く使います。

ちなみに、JavaScript でよくあるような bool 化 idiom である !! を援用して、
自前 if は最終的に以下のようになりました。

(defmacro macroif (any-symbol good bad)
(funcall
(car
(cdr
(assq (null (null any-symbol)) (list '(t car) '(nil (lambda (x) (car (cdr x))))))))
(list good bad)))

(cdrifx t (insert "ok") (insert "ng"))
ok
(cdrifx () (insert "ok") (insert "ng"))
ng
(cdrifx (list 1 2 3) (insert "ok") (insert "ng"))
ok


>>195
lisp は関数指向でも書けるけれど、そもそもマルチパラダイムなのが、
その規定の時点から現れているように思えます。
最小要素とするのに、macro による制御構造の書換えと
一箇所で特殊な振舞いをするという cond どっちが最小かと言えば cond のが小さそうです。
0198デフォルトの名無しさん
垢版 |
2015/03/19(木) 10:18:55.55ID:KVeBWceY
>>196
力技というほどのものでもなかった
(put t 'cdrif-value #'car)
(put nil 'cdrif-value #'cadr)
(defun convert (x)
(get x 'cdrif-value))
(defmacro my-if (idx good bad)
(funcall (convert idx) (list good bad)))

いや、本当はさらに
(put nil 'convert-value t)
(defun to-t-or-nil (x)
(not (ignore-errors (get x 'convert-value))))
(defun convert (x)
(get (to-t-or-nil x) 'cdrif-value))
とかいう力業っぽいことを考えてたんだけども、
ignore-errors が反則だったと気づいた。
こっちの反則版だとnil以外のどんな値を渡しても
ちゃんとt扱いされるという利点はあるけど…


C/C++プリプロセッサ、そういうことか。条件付きコンパイルを想像していた。
#define DEBUG(level) if(level>=verbosity){printf(_VA_ARGS_);}
みたいなことは一回やったことがある。
完全に文字列として変形するからlevelのところに関数呼び出しのコンマがあると
変なことになるという罠があるが、こういう用途だと大丈夫だしね。

自由度という点では何も考えずに言語全体を使えるlispマクロは特異に高いと思う。
elispじゃなくてcommon lispになっちゃうがland of lispとか読むと楽しいかもしれない。
0200183
垢版 |
2015/03/20(金) 03:19:22.81ID:x0oqiRHZ
>>198 ありがとうございます。取り急ぎお礼を申し上げ乙。
0203デフォルトの名無しさん
垢版 |
2015/08/29(土) 07:44:55.47ID:vrZb3qx4
なんかネタないの?
0205デフォルトの名無しさん
垢版 |
2015/08/29(土) 13:38:04.80ID:vrZb3qx4
>>204
却下
0207デフォルトの名無しさん
垢版 |
2015/08/30(日) 06:03:17.10ID:CnOlY9Pq
図書館で毎日ナンパして地下食堂のトイレでマン汁まみれで腰動かすんだよぉ
0208デフォルトの名無しさん
垢版 |
2015/10/10(土) 12:55:20.49ID:yXubKPZg
なんか話題ないの?
0212デフォルトの名無しさん
垢版 |
2015/11/15(日) 09:25:10.66ID:Bf2qkjUe
>>211
おねがいします
0213デフォルトの名無しさん
垢版 |
2015/11/19(木) 21:57:45.42ID:NWoSZj2q
>>212
よしわかった
0215デフォルトの名無しさん
垢版 |
2016/04/18(月) 00:14:54.95ID:rfz/B1KY
いーまっくすはじめようとしたらしょしんしゃはこれやっとけのところでえらーになったのでもうねます
0216デフォルトの名無しさん
垢版 |
2016/09/10(土) 01:53:11.20ID:LstVZLgo
初心者です
以下の文を電話で伝える場合、どのように話せばよいか教えて下さい。

(assq bool (list '(t car) '(nil (lambda (x) (car (cdr x))))))))

例:
かっこ始まり、えいえすえすくー ぶーーと かっこ始まり・・・・・・・・

みたいな感じでお願いしまつ
0217デフォルトの名無しさん
垢版 |
2016/09/10(土) 01:56:10.66ID:LstVZLgo
すみません。前の質問の補足ですが、なんで電話で伝えるかなのですが、
有料サポートで、おぺれーたーのお姉さまから、エラーのでる行を読み上げて下さいと言われたのですが、答えられない事があって、こんどこそ上手く説明しようとおもっています。
0218デフォルトの名無しさん
垢版 |
2016/09/10(土) 08:51:21.97ID:Jm2YrF8N
全部一文字ずつ読みあげれ
電話で済むことをいちいち不便な掲示板使うな
1分3000円とかかかるなら別だが
0219デフォルトの名無しさん
垢版 |
2016/09/10(土) 08:59:54.80ID:SMvnZvc1
電話サポートとかぼったくり以外の何物でもないんじゃ…
そもそもエラーの出る行が問題とは限らないし普通はメールかチャットでしょう
0220デフォルトの名無しさん
垢版 |
2016/09/25(日) 01:38:58.62ID:3wxXNG/W
windows機しか持ってなくて、今までCygwinについてくるvi使ってたんだけど、emacsを使ってみてるんですけど、ターミナル上でemacs使おうと思ったらいちいち-nwオプション付けないといけないんですか?それともみんなターミナルとは別ウィンドウで使ってるんですか?
0222デフォルトの名無しさん
垢版 |
2016/09/25(日) 05:04:32.10ID:16slqqIx
>>220
cygwinで-nw付けないで実行するならWindows上にX11サーバ立てないと
ntemacsとかならWindowsのUI上で実行されるよ。
0223デフォルトの名無しさん
垢版 |
2016/11/24(木) 22:34:59.53ID:blWHS/2X
>>217
elispで有料サポートしてる日本語窓口に興味ある
アレグロとかならまだわかるけど
>>219
普通はコードの内容の確認までするの?
0224デフォルトの名無しさん
垢版 |
2016/11/25(金) 15:26:09.57ID:NaD61Q6Y
確か大学生を鴨にしてる有料サポートがあった気がする
普通に指導員(大学院生のバイト)に聞いた方が早いし無料だし正確じゃんと思った覚えがある
0228デフォルトの名無しさん
垢版 |
2018/01/17(水) 14:02:46.62ID:k+xp7qjU
10年以上前のものなんですが、seimei.el というfjに流れていたelispを探しています。
どこかに残ってないでしょうか?
ご存知の方いらしたら教えて下さい
0231デフォルトの名無しさん
垢版 |
2018/02/18(日) 07:19:36.63ID:9uxjLLGw
load-historyにFILE-NAMEがnilのエントリーがあるかも、とヘルプにあるんですけど、そのエントリーがどのタイミングでどこから書き込まれてるか教えてください(eval-regionのブレークポイントつけても引っ掛からなかったです)。お願いします
0232デフォルトの名無しさん
垢版 |
2018/02/18(日) 23:14:43.83ID:nDa4ZZlt
>>228-230
過疎スレなのになんか気持ち悪いな。。。
バーカ
0233デフォルトの名無しさん
垢版 |
2018/02/19(月) 05:58:48.07ID:8lFyLir4
>>231
よく知らないが、リファレンスマニュアルを見た限りではそこは eval-region じゃないんじゃ……という気がする。
"emacs-lisp" "load-history"
でググったらそれらしいのが出てきたよ。
0234デフォルトの名無しさん
垢版 |
2018/02/19(月) 12:06:58.79ID:IAYRjFJ3
>>233
ありがとうございますマニュアル見直してみたらeval-bufferかもしれないです。もう1回やってみます
0236デフォルトの名無しさん
垢版 |
2018/05/23(水) 20:23:27.26ID:Au5e7VGg
僕の知り合いの知り合いができたパソコン一台でお金持ちになれるやり方
役に立つかもしれません
グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』

147M7
0237デフォルトの名無しさん
垢版 |
2018/07/05(木) 01:22:22.58ID:RfoszcD2
IEE
0238デフォルトの名無しさん
垢版 |
2018/11/22(木) 15:42:31.66ID:r/GLumvr
elispと若干違うけどスレがないので質問させてください
C-x C-hとやるとC-xから始まるコマンド一覧はでるのですが
モードごとのコマンド一覧を出すコマンドもあったと思うのですが何だか分かる方いますか
ruby-modeを入れたのですがどんなコマンドがあるのか調べたいです
0239デフォルトの名無しさん
垢版 |
2018/11/22(木) 16:45:53.83ID:vHHfqSHt
C-h b
あと、メニューバーを見れば基本的なキーバインドは確認できる
消してる場合は C-右クリ
0241デフォルトの名無しさん
垢版 |
2019/03/21(木) 00:07:03.75ID:BVBXqX32
emacs 24.5.1を使用しています。
ttp://www.miura-takeshi.com/etc/genkou.el
上記のプラグインを使用してバッファの文字列を原稿用紙換算したいのですが、
モードラインへの表示ができません。
文字列のカウント処理は問題なく動作しているので、下記のモードライン更新処理の
記述に問題があるようなのですが、何が悪いか分かる方いらっしゃいませんでしょうか?

(defun genkou-mode-line ()
"モードラインを書き換える"
(let ((tmp-list))
(setq genkou-mode-line-string
(format "--%d枚%d行" genkou-page-num genkou-line-num))
(make-local-variable 'mode-line-format)
(setq tmp-list (copy-sequence default-mode-line-format))
(setq mode-line-format
(append
(delete "-%-" tmp-list)
(append (list genkou-mode-line-string) (member "-%-" default-mode-line-format))))
(force-mode-line-update)))
0243デフォルトの名無しさん
垢版 |
2019/12/15(日) 00:19:45.52ID:YAW0GHgK
サクラエディタの代わりにLinux上で簡易なテキストの正規表現やコピべマンとして
ボリュームがvi以上vscode未満ということでEmacs採用したけどまともに使うまでにでもマゾ過ぎないかこれ
0244デフォルトの名無しさん
垢版 |
2019/12/15(日) 02:28:29.07ID:qZlo5BGy
Emacsってのは、すみずみまでいじり回して遊びたい人のための、組み立てキットみたいなものなんだよ。
改造しやすいってのが最大の売りで、各自で好みに合うように作り変えるのが大前提。
素のままでも一応は使えるけど、そんなに便利には作られてない。

魔改造とかする気がないなら、他に適したエディタがあると思う。
0245デフォルトの名無しさん
垢版 |
2019/12/15(日) 10:46:01.17ID:S9GzmkuV
wine使ってサクラエディタが動くから試してみたら?
Emacsは何かの代わりに使おうとすると、操作体系が違い過ぎて挫折する
0246デフォルトの名無しさん
垢版 |
2020/02/25(火) 21:01:07.43ID:nMAvGdtS
2つ質問します。

1. 選択範囲を削除するけれど、kill-ringに入れないという設定を教えて下さい。
 kill-ringの一番新しいものをそのままにしておきたいからです

2. yankした際に、yankされたものの末尾にカーソルが飛ぶのですが、
 カーソルが移動しないようにする設定を教えて下さい。

お手数をおかけしますが、お願いします。
0250デフォルトの名無しさん
垢版 |
2020/03/16(月) 17:02:19.48ID:r6kvZN2B
シェルスクリプトからemacs ―batch で処理した結果をprintすると
\\. \\. \\“
みたいの沢山でてくる
エスケープなしで表示された通りの文字列を得るにはどうすれば良いのでしょう
0251デフォルトの名無しさん
垢版 |
2020/03/16(月) 17:29:13.93ID:uq6V7ZgT
>>250
princ
0252デフォルトの名無しさん
垢版 |
2020/03/17(火) 01:23:57.66ID:h1pz+/ac
princにすると
\\,

\,
になったのですが
,
にする方法はないのでしょうか
0253デフォルトの名無しさん
垢版 |
2020/03/17(火) 02:39:06.56ID:Kot3zOY6
>>252
princ が引数の文字列に含まれていない \ を勝手に印字することはないから、
その「処理」とやらで \ を追加しているのでは
または emacs への入力の時点ですでに \ を含んでいるとか
0255デフォルトの名無しさん
垢版 |
2020/08/26(水) 15:21:01.87ID:L7JtIZFl
Windows の Emacs
日本語入力しようとして
半/全 キー押してしばらくしたら
Emacs ウィンドウ全部落ちた
バグ?
0257デフォルトの名無しさん
垢版 |
2020/10/14(水) 10:11:53.97ID:GsUUoEHv
(point) って 4GB 以上のファイルでも安全?
0259デフォルトの名無しさん
垢版 |
2020/10/19(月) 12:25:40.39ID:asy7wTux
>>255
windows 10 64bit
emacs 26.3 64bit
また再現した
emacs 以外も含めて(同時起動中のソフト) windows 10 全体の ime が
モードが変になったり勝手に改行されたり狂い始める
このまま使い続けるとそのうち emacs が落ちるんだと思う
task manager から ctfmon.exe を殺したら治ったっぽい
0260デフォルトの名無しさん
垢版 |
2020/10/27(火) 16:42:12.74ID:yDmA/b17
emacs って 8MB 以上のテキストファイルで警告出るω
最近の大きめの xml とか json とか yaml とか怖くて編集出来ないωωω
0262デフォルトの名無しさん
垢版 |
2020/10/28(水) 10:14:23.93ID:B0xF7HGe
それじゃなにか?きみは「ここから先は18歳以下は閲覧できません」っていう
警告がでたからといって見たいエロ動画も見ずにすごすごと帰る、というそんな腰抜けなのか!
0264デフォルトの名無しさん
垢版 |
2020/11/08(日) 09:55:05.64ID:w3b7rq0H
Emacs 26.3 (build 1, x86_64-w64-mingw32) of 2019-12-31

漢字キーを押して
「でるた」
で変換始めると
重たくなって
しばらくしたら落ちる
0265デフォルトの名無しさん
垢版 |
2020/11/08(日) 09:56:25.01ID:w3b7rq0H

の表示のあとカーソルが消えて重くなる
0266デフォルトの名無しさん
垢版 |
2021/02/08(月) 16:32:46.35ID:FcZ190S6
日本語入力はもう諦めた
単にコードや英文に記号使いたいならdigraph覚えるのをオススメする
\C-c k D *で対応するギリシア文字凾ンたいな
dならδ、->で→、数学記号も不足なし
あとかなはkaでカナはNaだったり
国際規格があるので覚えとけば汎用性がある
(比べる訳じゃないが少なくともvimでは標準機能)

(global-set-key (kbd "C-c k")
(define-prefix-command 'alistから記号拾ってくる関数 ))

自分用elも転がってたけど網羅的でないかったので、ググって一番に出てくるvimヘルプのテーブルをコピペして整形した

melpaに無いと思い込んでたんだけど、今調べたらevilとかいうevilなのが出てきた、多分名前でスルーしてたわ
0267デフォルトの名無しさん
垢版 |
2021/02/08(月) 16:39:31.18ID:FcZ190S6
ひらがなかたかなときごうとalphabetのぶんしょうなら、マップがローマ字にゅうりょくとたいおうしているので、いっそdefine-keyしてしまえばじっしつIMEいらずだぞ!
0268デフォルトの名無しさん
垢版 |
2021/02/08(月) 16:40:43.17ID:FcZ190S6
字はうてなかった、かたておち…
まあ、げんきかくまではみてないのでもしかしたらかんじもあるかも
0269デフォルトの名無しさん
垢版 |
2021/10/09(土) 19:32:02.55ID:KRzSwEb7
Bash on windows(Ubuntu)のemacs

Windows 10に
scoop install emacs
した環境

どっちも環境変数homeを見にいくのでciderがどっちかの環境で動いてくれない
0271デフォルトの名無しさん
垢版 |
2023/09/25(月) 16:47:00.13ID:Qn9WiVG4
こっちを再利用してください
0272デフォルトの名無しさん
垢版 |
2023/10/13(金) 13:14:55.06ID:1CzMMp9Z
emacs lispでC++のコメントを削除(行コメント//だけを行ごと削除)する方法を教えてください
0273デフォルトの名無しさん
垢版 |
2023/10/13(金) 14:18:48.79ID:oUGpYLYU
(defun comment-traversal (beg end func)
(save-excursion
(let (spt ept)
(goto-char beg)
(while (and (< (point) end)
(setq spt (comment-search-forward end t)))
(setq ept (progn
(goto-char spt)
(unless (or (comment-forward)
(eobp))
(error "Can't find the comment end"))
(point)))
(funcall func spt ept)))))
0274デフォルトの名無しさん
垢版 |
2023/10/13(金) 14:19:30.72ID:oUGpYLYU
(defun not-comment-traversal (beg end func)
(save-excursion
(let (spt
(ept (1- (goto-char beg))))
(while (and (< (point) end)
(setq spt (comment-search-forward end t)))
(funcall func (1+ ept) spt)
(setq ept (progn
(goto-char spt)
(unless (or (comment-forward)
(eobp))
(error "Can't find the comment end"))
(point))))
(funcall func ept (min end (1- (point-max)))))))
0275デフォルトの名無しさん
垢版 |
2023/10/13(金) 14:20:49.82ID:oUGpYLYU
最初のはコメントを抜き出すコード
次のはコメント以外を抜き出すコード
バッファー内のコメントを消していくのは難易度が高い
コメント以外を出力してリダイレクトするのが簡単だろう
↓こんな感じ
(not-comment-traversal (point-min) (point-max)
(lambda (beg end)
(print (buffer-substring beg end))))
ちなみにコメントはEmacsが把握してるので、このコードは言語非依存だ
0278デフォルトの名無しさん
垢版 |
2023/10/13(金) 16:08:10.43ID:ugq7JLEK
うん、だから、ChatGPTはバカだな
こんなものに時間をそそいでいる人類はバカ
0279デフォルトの名無しさん
垢版 |
2023/10/13(金) 23:03:38.37ID:9b0YvF5R
そういうのはキーボードマクロが向いている
//をインクリメントサーチして、c-a,c-k,c-k
で名前を付けて登録
登録したマクロを10000000回ぐらい実行すればいい
0280デフォルトの名無しさん
垢版 |
2023/10/14(土) 12:49:27.28ID:x03gZ5vc
>>278
ほんそれ
0281デフォルトの名無しさん
垢版 |
2023/10/15(日) 11:32:10.04ID:HSf5ScFa
ファイルの先頭に移動して
M-x flush-lines
を起動して
^//
を打ち込んだら消せました
0283デフォルトの名無しさん
垢版 |
2023/11/11(土) 20:06:28.30ID:6Uwmj7p8
だからキーボードマクロを使えって

/*をインクリメントサーチ二文字戻って
マーク、*/をインクリメントサーチで探して
kill-region

これをキーボードマクロにして
何なら名前を付けて init.el に登録することもできる
0284デフォルトの名無しさん
垢版 |
2023/11/11(土) 20:13:40.67ID:6Uwmj7p8
具体的には

c-x(
esc<
c-s/*
c-@
c-s*/
c-w
c-x)

これでマクロ完成。名前を付けるには

M-x name-last-kbd-macro

で好きな名前を付けるだけ

init.el を開いて

M-x insert-kbd-macro

これで登録できる
0287デフォルトの名無しさん
垢版 |
2023/11/12(日) 19:43:42.90ID:IUEeiAD3
/* // */
は、先に // で消してしまうとおかしな事になるな
まぁ、先に/* */を消せばいいがな
それと、>>284のマクロはコメント1個しか消せないじゃん
全部消さないと
取り敢えずこれらを全部対応させたキーボードマクロを出さないと駄目
0288デフォルトの名無しさん
垢版 |
2023/11/13(月) 23:08:48.29ID:Y+b0wq04
/* */を排除するマクロを100000回ぐらいやって
次に // を排除するマクロを1000000回ぐらい動かす
気持ち悪いかもしれないが目的は達せられる
0289デフォルトの名無しさん
垢版 |
2023/11/18(土) 15:57:54.85ID:bNx8n+lD
インクリメントサーチが失敗するまで
無限ループで回すことはできるけどね
レスを投稿する


ニューススポーツなんでも実況