Emacs

Emacsを使っている、拡張している、または開発している人のためのQ&A

1
部分的なplistのcl-destructuring-bind?
これによりエラーが発生します (cl-destructuring-bind (&key a b) '(:a "foo" :b 13 :c "bar") (list a b)) :cキー/値はパターン一致で処理されないためです。 多くの場合、plistからキー/値のサブセットを抽出したいと思ってcl-destructuring-bindいますが、この制限のため適切ではありません。 cl-destructuring-bindEXPRで一致しないキーを単に無視する方法はありますか?公式の一般的なlispの動作がどうなっているのかわかりませんが、仕様のエラーですか? ダッシュライブラリは、を使用した同様のデストラチャをサポートしています-letが、各キーにシンボルを割り当てるためのボイラープレートが必要です。修正が提案されています ステファンの答えを考慮に入れると、これはうまくいきます: (defmacro plist-bind (args expr &rest body) "`destructuring-bind' without the boilerplate for plists." `(cl-destructuring-bind (&key ,@args &allow-other-keys) ,expr ,@body)) (plist-bind (a b) '(:a "foo" :b 13 :c "bar") (list a b)) => …

1
正規表現でシンボルを一致させる方法は?
現在のメジャーモード設定に従って、シンボル、つまり関数名などに一致する正規表現を構築しようとしています(正しく覚えている場合は、構文テーブルと呼ばれます)。調査の結果、これらの有用な正規表現が見つかりました。 \_< シンボルの始まりに一致 \_> シンボルの終わりに一致 次に、記号構成文字を表す方法を見つける必要があると思います。我々は持っている\w単語構成文字のために、私はシンボルのための何かを見つけることができません。シンボルに一致する正規\s表現は、次のようになります(シンボル構成文字に一致すると想定)。 \_<\s+\_> 何か不足していますか?シンボルを一致させる方法は? 単語のマッチングは機能しません。些細な例はfoo-bar、Emacs Lispモードのシンボルのようなものですが、単語で-はありません(単語を構成する文字ではないため)。

2
単語構文ではスクリプトが考慮されますか?
US / RU / IPA文字列でcount-words-region(M-x =)を呼び出します: HelloПривheləʊ 次のメッセージが出力されます。 Region has 1 line, 4 words, and 14 characters. すべてのシンボルにはw構文がありますが、スクリプトが異なります。 (char-syntax ?H) ; ?w (char-syntax ?П) ; ?w (char-syntax ?ʊ) ; ?w (aref char-script-table ?H) ; script: latin (aref char-script-table ?П) ; script: cyrillic (aref char-script-table ?ʊ) ; script: phonetic これは、単語境界がchar構文だけでなくcharスクリプトによっても定義されていることを意味しますか? 単語間を移動できるが、スクリプト間は移動できないようにするために、選択したモードでこの動作を無効にしたいと思います。どうすればこれを達成できますか? …
9 syntax 

2
前の行ではなく、新しい行のみをインデントするように、RET(電気的インデントあり)の動作を変更します。
/programming/27077770/how-do-i-disable-electric-indent-on-ret-but-still-keep-other-electric-charactersは、RETを押したときに電気インデントを無効にする方法を尋ねて答えます。同様の質問はすべて、「インデントモードを無効にする」で止まるようです。 デフォルトでは、RETは前の行と新しい行をインデントします。新しい行の場合、これは、カーソルを正しい位置に表示するのに十分な空白を単に追加することを意味します。 動作の2番目の部分は好きですが、最初の部分は好きではありません。つまり、前の行をインデントしたくありません。それを変更して新しい行に十分な空白を与える方法はありますが、前の行はそのままにしておきますか? 私は実際にはほとんどの電気を必要としない/欲しくない。電気インデントモードをオフにするが、「新しい行に空白を追加する」機能を何らかの方法でアクティブにするという解決策は、私には問題ありません。

1
特定のディレクトリの組織ファイルを自動的にもつれさせる
Emacsの設定を書き換えることをとても楽しんだので、ドットファイルをorg-babelファイルに変換していinit.orgます。保存するたびに自動的にもつれる機能があります。しかし、私は.orgファイルを~/.dotfiles自動的に同じようにするなど、ファイルを作成することに成功していません。私は現在この機能を持っています: (defun my/tangle-dotfiles () "If the current file is in '~/.dotfiles', the code blocks are tangled" (when (equal (buffer-file-name) (expand-file-name "~/.dotfiles/tmux.org")) (org-babel-tangle) (message "Dotfile tangled"))) (add-hook 'after-save-hook #'my/tangle-dotfiles) ただし、これは私が指定した特定のファイルに対してのみ機能し、どのorgファイルに対しても機能しません。を使用*.orgしても機能しません。また、バッファとディレクトリの両方からディレクトリ名を抽出して、そのようにする方法もわかりませんでした。 Freenodeの#emacsについても質問しましたが、誰もそこに答えてくれませんでした。どこから始めればよいかについてのヘルプやアドバイスをいただければ幸いです。

1
ES6-7でorg-babelソースブロックを機能させる方法は?
私はorg-babelにこのコードブロックを評価させるのに苦労しています emacs v24.5 ノードv5.0.0 バベルノードv.6.6.5 #+ BEGIN_SRC js:cmd "babel-node" let arr = [1、2]; let [x、y] = arr; console.log(x); console.log(y); #+ END_SRC 出力は次のようになります / tmp / babel-3700Vaq / js-script-37003RN:2 let arr = [1、2]; ^^^ SyntaxError:ブロックスコープ宣言(let、const、function、class)は、strictモード以外ではまだサポートされていません exports.runInThisContext(vm.js:53:16)で Module._compile(module.js:404:25)で ローダー(/usr/local/lib/node_modules/babel-cli/node_modules/babel-register/lib/node.js:126:5) at Object.require.extensions。(無名関数)[.jsとして](/usr/local/lib/node_modules/babel-cli/node_modules/babel-register/lib/node.js:136:7) Module.load(module.js:356:32) Function.Module._load(module.js:311:12)で Function.Module.runMain(module.js:457:10)で /usr/local/lib/node_modules/babel-cli/lib/_babel-node.js:161:27 オブジェクトで。(/usr/local/lib/node_modules/babel-cli/lib/_babel-node.js:162:7) Module._compile(module.js:425:26)* しかし、このソースブロックは問題ないようです #+ BEGIN_SRC js:cmd "babel-node" …

1
eshellのバック/フォワードディレクトリエイリアスを作成する方法
私は長年、zshスクリプトを使用してきました。これにより、ディレクトリを変更するたびに、pushdが暗黙的に発生します。このスクリプトは、「b」および「f」エイリアスを設定します。これは、Webブラウザーの「戻る」および「進む」ボタンと同様に、スタックを上下に移動します。セッションの例: /etc $ cd /tmp /tmp $ cd /bin /bin $ b /tmp $ b /etc $ f /tmp $ f /bin $ 私はそれが信じられないほど便利であると思ったので、これをeshellに設定するための最良の方法は何ですか? 編集:私がここで行ったコードを参照してください、以下のわずかな変更:https://gist.github.com/jgarvin/0627ed76a773ade222f6
9 eshell  aliases 

2
変数を設定するための:configを使用した `use-package`
を使用use-packageしてorg-mode初期化を設定しようとしています。私の~/.emacsファイルには次のものが含まれています。 (use-package org-mode :mode "\\.org$" :ensure org :config (progn (setq org-log-done 'time) (setq org-confirm-babel-evaluate nil) (setq org-export-babel-evaluate nil) (setq org-html-validation-link nil) ;; ... more stuff ) ) :configただし、その初期化機能は実行されません。パッケージ名は間違っていますか?パッケージ名対ELPA名対呼び出しコマンドについて、少し混乱します。

2
`eval-when-compile`がファイルのロード時に実行され、.elcにバイトコンパイルされるのはなぜですか?
マクロ展開を回避する、またはバイトコンパイル中に未定義の変数に関する警告を解決するための一般的なイディオム: (eval-when-compile (require 'cl-lib)) しかし、これrequire ...は.elcファイルにコンパイルされました!cl-eval-when(名前によると)適切なセマンティックスがあることがわかりました。 通常require、サイトファイルやpackage.el たとえば.emacs、いくつかの外部マクロを使用して自分をバイトコンパイルしたいのですが、そのようなパッケージがない場合は黙ってパススルーします。 (cl-eval-when 'compile (condition-case err (require 'w3m-util) (error (byte-compile-warn "Failed by: %S" err)))) (w3m-util-DEPENDENT-CODE ...) これを行う別の方法は次のとおりです。 (ignore-error (require 'w3m-util) (w3m-util-DEPENDENT-CODE ...)) しかし、今はトップレベルのフォームではありません... そのeval-when-compile名前を適切に入力して、その名前から予期されないことをしますか?

1
Org-modeは1日のイベントを複数日にスケジュールしますか?
複数の曜日に発生するTODOタスクを設定できることについては何も見つかりませんSCHEDULE。 たとえば、私はSTAT授業をしMon WedてFriいて、+1w引数を付けて毎週イベントを繰り返したいと思っています。 これは可能ですか、それとも3つの別々のSTATイベントが必要で、それぞれに1w引数がありSCHEDULEますか?
9 org-mode 

3
変数を切り替える簡単な方法
変数を切り替える簡単な方法があると便利です。これが私が心に留めていることです。 「var切り替え」関数を呼び出します。 completing-read単一の値(ないリストや連想リスト)を持つ変数のみをリストする必要があります。それができるかどうかわかりません。tまたはのいずれかの値を持つ変数のみを一覧表示する場合は、さらに良いでしょうnil。これは不可能だと確信しています。 次にt、現在の値がの場合、関数はvar値をに設定し、nil逆の場合も同様です。 問題は、これを行うelisp関数がすでにあるかどうかです。そうでない場合、およびカスタムソリューションでこの問題に対処したことがある場合は、その方法を確認したいと考えています。 更新: ボーナス機能はcompleting-read、トグルのためにポイント(存在する場合)の下にシンボルを提案することです。 したがって、「toggle var」fnがにバインドされているC-c ~場合、使用量はと同じくらい短くなりC-c ~ RETます。 varを切り替える現在の手順は次のとおりです。 C-h v VAR、現在の変数値を取得します。 M-: (setq VAR toggled-value)。 または M-: (setq VAR (not VAR))。 私はこのプロセスを高速化する方法を探しています(タイピングが少ない)。

1
ローカル変数リストの変数行をコメント化する方法
私が持っているPythonファイルで # Local Variables: # python-shell-interpreter: "python3" # python-shell-virtualenv-path: "~/.virtualenvs/datascience" # leo-python-args-to-send: "-f fqanalysis.txt" # End: 数日間、virtualenvを指定せずにpythonファイルを使用したいので、行の設定をコメントアウトして、python-shell-virtualenv-path次にemacsでpythonファイルを開いたときにpython-shell-virtualenv-path、グローバル値が保持されるようにします。 私は試した # ;;python-shell-virtualenv-path: "~/.virtualenvs/datascience" そして ## python-shell-virtualenv-path: "~/.virtualenvs/datascience" しかし、pythonファイルを開くと、常にエラーが発生します File mode specification error: (error "Malformed local variable line: ...) ローカル変数の行を正しくコメントアウトするにはどうすればよいですか?

2
org-block-backgroundフォントが機能しない
バッファで使用variable-pitch-modeしていorgます。通常、Iセットorg-blockへfixed-pitchとの間のコード#+BEGIN_SRCと#+END_SRC適切にも、適切な構文の強調表示して、固定幅フォントとしてレンダリングされます。しかし、先週から、何らかの理由で、コードブロックフォントはまだ適切な構文強調表示を備えていましたが、顔はvariable-pitch-face通常の組織モードテキストと同じになりました。パッケージを定期的に更新していますが、更新がorg-mode原因で問題が発生したと思いますが、何が起こったのかわかりません。 更新: これは実際にはorg-block-backgroundface に関連していることがわかりましたf8b42e8。これはcommitで組織バージョン8.3.1で削除されたため、バグです。まだ解決策があるかどうかわかりません。/programming/26290924/fontify-r-code-blocks-in-org-mode-8 https://lists.gnu.org/archive/html/emacs-orgmode/2015-08/msg00510 .html 現在、私の組織モードのバージョンを古いバージョンにロックしています。 アップデート2: 最新のorg-modeリリースであるバージョン9.0.0では、顔が時代遅れになりつつ、顔をsrc-blocks継承できるようです。したがって、フェイスを設定するだけで、すべてのコードに固定幅フォントを使用できるようになります。org-blockorg-block-backgroundorg-block
9 org-mode  faces 



弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.