選択したテキストをPythonマクロのように変換する

私はEmacs(今は約6週間)で始まったばかりなので、私はそのコーディング言語に精通していません。私はEmacsのために、私がSublime Textセットアップで持っているPythonマクロに相当するものを書くことが可能かどうか疑問に思っていました。

崇高なテキストでは、私は選択された行のテキストを変換できるPythonマクロを持っています。私が線を選択すると

foo
bar
baz

テキストが ['foo'、 'bar'、 'baz'] に変換された私の選択したショートカット C-l C-s を押します。

私はEmacsのためにこれをどうやってできるのだろうと思っていた。

1
追加された 編集された
ビュー: 1
Emacsには「マクロ」と呼ばれる2つの種類があります。まず、Emacs Lisp言語はマクロを提供します( C-h i(elisp)Macros を参照)。次に、キーボードマクロ( C-h i(emacs)Keyboard Macros を参照)と呼ばれる編集機能があります。私はあなたが実際にこれらのことのいずれかを意味していたとは思わないので、混乱を避けるために必ず「マクロ」という言葉を完全に避けるべきです。
追加された 著者 Mark Ireland,
はい、もちろん可能です! elispを使ってemacsをプログラムします。これは、Lispの方言は本格的なプログラミング言語です。 emacsを使って、これ以上の複雑なテキスト処理タスクを実行することができます。正確に記述できる場合は、プログラムすることができます。実際にこの特定のタスクを実行する機能が欲しいですか? (別の注記では、あなたのタグ[マクロ]は間違っています;ここでは、elispの特定の言語機能を参照しています)。
追加された 著者 AttackingHobo,
ええと、私はこの機能(マクロではない)を書くつもりはありませんでした。多分誰かがそうするでしょう。しかし、簡単な注記:これは、ある種のプログラミング言語で文字列のリストを作成するために使用する場合、選択されたテキストに既に存在する一重引用符を扱うかどうか、どのように扱うべきかを決定する必要があります。つまり、行の1つに "fo'c'sle"が含まれていれば、 'fo''c''sle' 、または 'fo \' c \ 'sle 'またはまったく異なるものはありますか?
追加された 著者 AttackingHobo,
この特定の作業を行うマクロは非常に便利です。ありがとうございます。私がSublime Textからemacsに移行しようとしている理由の1つは、プログラマブルでオープンソースなので(開発者が興味を失うことを心配する必要はありません)ということです。
追加された 著者 TomMcW,
あなたの応答は依然として非常に有用で、私はemacsマクロを探していました。私は現在elisp関数を検索しており、 stackoverflow.com/questions/605846/… 私は、 veは言った。ありがとうございました。
追加された 著者 TomMcW,

1 答え

このメソッドは、選択した行を単一引用符で囲み、リスト内に配置します。

(defun lines-to-list (point mark)
  (interactive "r")
  (let ((text (buffer-substring point mark)))
    (delete-region point mark)
    (insert "[")
    (insert (mapconcat (lambda (line) (format "'%s'" line))
                       (split-string text "\s*\n\s*")
                       ", "))
    (insert "]")))

次のようなキーショートカットにバインドすることができます:

(define-key python-mode-map (kbd "C-c C-l") #'lines-to-list)
5
追加された