كيفية تشغيل رمز ELISP معين بعد بدء إطار emacsclient جديد؟
-
22-09-2019 - |
سؤال
لكيفية تقييم رمز 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.