كيفية تشغيل رمز ELISP معين بعد بدء إطار emacsclient جديد؟

StackOverflow https://stackoverflow.com/questions/1980784

سؤال

لكيفية تقييم رمز LISP معين تلقائيًا كل مره بدء emacsclient ، انقر هنا.

مشكلتي مختلفة. أريد أن أكتب برنامج نصي يفتح إطارًا جديدًا لـ Emacs (مع التركيز عليه) (طريقة واحدة للقيام بذلك هي التشغيل emacsclient -c) ثم قم بتشغيل رمز ELISP التالي في هذا الإطار.

(org-remember)

حاولت

emacsclient -c & emacsclient -eval '(org-remember)'

ولكن في بعض الأحيان يفتح إطارًا جديدًا غير مركّز ثم يدير رمز ELISP ، وفي أحيان أخرى ، يفتح إطارًا جديدًا يركز ولكنه يعمل على تشغيل رمز ELISP في الإطار القديم.

بعض من يعرف ما الذي قد يسألني Org-Remember لماذا لا يفعل هذا فقط:

emacsclient -eval '(org-remember)'

لكن هذا لا يركز على الإطار القديم.

هل كانت مفيدة؟

المحلول

روايتي من emacsclient لا تدعم -c حجة ، على الرغم من الوثائق تعلن عنها.

لست متأكدًا مما إذا كانت هناك طريقة أنظف للقيام بذلك ، ولكن يمكنك محاولة استخدام make-frame و select-frame, ، مثل ذلك:

emacsclient -e '(select-frame (make-frame))' '(org-remember)'

سيؤدي ذلك إلى إنشاء إطار جديد ، وفي حالة قيام مدير النوافذ الخاص بك باختياره تلقائيًا ، يمنحه التركيز ، ثم تنفيذ الأمر الثاني مع هذا الإطار الجديد الذي له تركيز.

نصائح أخرى

ماذا عن فقط الجمع بين خطين الأوامر اللذين جربتهما بالفعل إلى واحد:

emacsclient -c -e '(org-remember)'

الذي يعمل في emacs 23.1.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top