จะรีเซ็ตธีมสีได้อย่างไร?


25

เมื่อฉันลองใช้ชุดรูปแบบสีที่แตกต่างออกไปดูเหมือนว่าหากองค์ประกอบใดไม่ได้กำหนดไว้ในชุดรูปแบบใหม่ค่าชุดรูปแบบเก่าจะถูกเก็บไว้และสิ่งนี้นำไปสู่การปะทะกันบางอย่าง นี้เกิดขึ้นใน emacs 24 color-themeและรุ่นก่อนหน้าโดยใช้ มีวิธีรีเซ็ตสีทั้งหมดเป็นค่าเริ่มต้นหรือไม่เพื่อให้ชุดรูปแบบสีแต่ละชุดมีลักษณะตามที่ต้องการ

คำตอบ:


22

คุณแน่ใจหรือว่าคุณกำลังใช้ชุดรูปแบบสีและไม่ใช่ชุดรูปแบบที่กำหนดเองของ Emacs? ธีมสีcolor-theme.elจะถูกกำหนดโดยห้องสมุด ชุดรูปแบบที่กำหนดเองมีให้เริ่มต้นด้วย Emacs 24 - และไม่เหมือนกับชุดสี

  1. หากคุณกำลังใช้สีรูปแบบแล้วคำตอบคือง่าย: [Reset]เพียงแค่ช่วยให้หลอกสีธีมที่ชื่อว่า นั่นเป็นการยกเลิกธีมโดยสมบูรณ์: ลบเอฟเฟกต์ทั้งหมดที่กำหนดไว้ออก

  2. หากคุณเป็นจริงในการใช้ชุดรูปแบบที่กำหนดเองของ Emacs คำตอบนั้นไม่ง่ายนัก คุณไม่สามารถเลิกใช้แอปพลิเคชันของธีมที่กำหนดเองได้ สิ่งที่คุณสามารถทำได้ซึ่งจะช่วยได้มากคือการปิดใช้งานธีมที่กำหนดเองแต่ละรายการโดยใช้disable-themeหลังจากเปิดใช้งานแล้วและก่อนเปิดใช้งานธีมที่กำหนดเองอื่น

    ต่อไปนี้เป็นสองวิธีในการทำ "กึ่งอัตโนมัติ":

    • แนะนำload-themeให้ปิดการใช้งานชุดรูปแบบที่กำหนดเองทั้งหมดก่อนที่จะโหลด (เปิดใช้งาน) ชุดแรก นี้ได้รับการแนะนำในคำตอบนี้ StackOverflowโดยTungd ที่ tungdao.com

      (defadvice load-theme (before theme-dont-propagate activate)
       (mapcar #'disable-theme custom-enabled-themes))
      
    • กำหนดและใช้ฟังก์ชั่นที่ปิดการใช้งานชุดรูปแบบปัจจุบันก่อนเปิดใช้งานรูปแบบ นี้ได้รับการแนะนำโดยMaris Orbidans

      (defun enab-theme (theme) 
       (if current-t43m3 (disable-theme current-t43m3))
       (setq current-t43m3 theme) 
       (load-theme theme t)) 
      

    ดูโพสต์ SO ดั้งเดิมเหล่านั้นสำหรับข้อมูลเพิ่มเติมเล็กน้อยและดูคำถามและคำตอบอื่น ๆ ในหน้า SO เดียวกัน (Caveat: คำตอบที่ยอมรับได้ในหน้านั้นไม่ใช่คำตอบสำหรับปัญหาในการเลิกทำชุดรูปแบบที่กำหนดเอง)

  3. โปรดทราบว่าแม้โซลูชันที่อธิบายไว้ใน # 2 ไม่ใช่โซลูชันทั่วไป: พวกเขาไม่ได้เลิกใช้แอปพลิเคชันของธีมที่กำหนดเอง - ไม่มีวิธีการทำเช่นนั้น นั่นคือการปิดใช้งานธีมที่กำหนดเองไม่คืนใด ๆที่ไม่ใช่รูปแบบ การปรับแต่ง (เช่นการเปลี่ยนแปลงใบหน้า) ที่คุณอาจจะทำก่อนที่จะเปิดธีมที่และที่ถูกแทนที่โดยชุดรูปแบบที่

กล่าวอีกนัยหนึ่งการยกเลิกชุดรูปแบบสีเป็นเรื่องเล็กน้อย การยกเลิกธีมที่กำหนดเองนั้นเป็นไปไม่ได้ สิ่งที่ดีที่สุดที่คุณสามารถทำได้สำหรับธีมที่กำหนดเองคือการปิดการใช้งานที่เกี่ยวข้องกับธีมที่กำหนดเองอื่น ๆ

การอ้างอิงที่ดีที่สุดสำหรับคำถามนี้และหาวิธีการของการสลับ (เช่นการขี่จักรยาน) ในหมู่ทั้งสีที่กำหนดเองและรูปแบบจะเป็นหน้า Emacs วิกิพีเดียสีที่กำหนดเองและธีม

และได้รับการเตือนล่วงหน้า:มีข้อมูลที่ทำให้เข้าใจผิดจำนวนพอสมควรในสถานที่ต่าง ๆ เกี่ยวกับธีมที่กำหนดเองของ Emacs ในเรื่องนี้ ผู้คนตื่นเต้นอย่างชอบธรรมที่ Emacs เพิ่มธีมที่กำหนดเองเป็นคุณสมบัติใน Emacs 24 และบางคนก็กระโดดลงไปทันทีเพื่อข้อสรุปที่ผิดพลาดว่าธีมที่กำหนดเองนั้นมาแทนที่ธีมสี พวกเขาจะไม่. แต่ละข้อมีข้อดี การไม่สามารถเลิกทำเป็นข้อเสียที่สำคัญของธีมที่กำหนดเองตัวอย่างเช่น

[ รายงานข้อผิดพลาด GNU Emacsนี้เป็นการร้องขอการปรับปรุงเพื่อแก้ไขความไม่สามารถเลิกทำชุดรูปแบบที่กำหนดเองได้ (และคืนค่าการปรับแต่งก่อนหน้านี้)


1
คุณสามารถเพิ่มได้ว่าหากคุณเลือกชุดรูปแบบสีโดยใช้คำสั่งเช่นcolor-theme-dark-laptopนั้นคุณจำเป็นต้องสร้างสแน็ปช็อตด้วยตนเองหากคุณต้องการเปลี่ยนกลับเป็นชุดรูปแบบก่อนหน้า เช่น(fset 'color-theme-revert (color-theme-make-snapshot))จะให้คำสั่งให้คุณcolor-theme-revertย้อนกลับ ปุ่ม [Resert] จะไม่ทำงานอย่างอื่น (เพื่อทดสอบว่าฉันถูกต้องอย่าออกคำสั่งcolor-theme-selectก่อนที่คุณจะเปลี่ยนรูปแบบเช่นนี้จะทำให้ภาพรวมที่ขาดหายไปสำหรับคุณ)
4514

โปรดทราบว่าธีมหางเสือจะปิดการใช้งานชุดรูปแบบอื่นโดยอัตโนมัติเมื่อเลือกชุดรูปแบบใหม่
ocodo

1
@EmacsFodder: ถ้าคุณมีการพูดคุยเกี่ยวกับรูปแบบที่กำหนดเองแล้วปิดการใช้งานรูปแบบอื่น ๆ ไม่เพียงพอ คุณไม่สามารถกลับสู่สถานะเริ่มต้นที่มีอยู่ก่อนที่จะเปิดใช้งานธีมที่กำหนดเอง ปัญหานี้ไม่มีอยู่สำหรับชุดรูปแบบสี - คุณสามารถถ่ายภาพของสถานะเริ่มต้นและกลับไปใช้ ดูหน้าอ้างถึง EmacsWiki และรายงานข้อผิดพลาดที่อ้างถึง ไม่มีสัญลักษณ์เงินเวทย์มนตร์ที่นี่มีหางเสือหรืออย่างอื่น มันเป็นเพราะ (ข้อบกพร่อง) วิธีการออกแบบธีมที่กำหนดเอง
Drew

@JSG: ใช่เพื่อให้สามารถกลับสู่สถานะเริ่มต้นก่อนที่จะเปิดใช้งานชุดรูปแบบสีใด ๆ คุณควรสร้างสแนปชอตของชุดนั้น ที่อธิบายไว้ในหน้า EmacsWiki ที่อ้างถึงและรายงานข้อผิดพลาดของ Emacs ที่อ้างถึง ใช่คุณอาจต้องคิดล่วงหน้า แต่อย่างน้อยก็เป็นไปได้ที่จะกลับไปสู่สภาวะนั้น คุณลักษณะนี้หายไปสำหรับธีมที่กำหนดเอง - การปิดใช้งานธีมที่กำหนดเองจะไม่นำคุณกลับสู่สถานะเริ่มต้น
Drew

นี่เป็นข้อมูลที่มีค่าสำหรับฉันเกี่ยวกับความแตกต่างของพวกเขาเนื่องจากฉันไม่เคยได้สัมผัสเรื่องนี้มาก่อนใน Emas ดังนั้นขอบคุณ! เพียงเพื่อประโยชน์ของข้อมูลเพิ่มเติมและการปรับปรุง ณ เดือนกรกฎาคม 2016 ใน Emacs 25.2.1 ตอนนี้ดูเหมือนว่าคุณสามารถบันทึกการตั้งค่าของคุณเองเป็นธีมได้ - หรืออย่างน้อย Emacs ที่นี่ให้ฉันทำ นอกจากนี้ฉันต้องระบุอย่างชัดเจน (บนcustomize-themesUI) หากฉันต้องการเปิดใช้งานมากกว่าหนึ่งธีมในเวลาเดียวกัน ฉันคาดเดาสิ่งเหล่านี้อาจเป็นวิธีการยกเลิกชุดรูปแบบที่ใช้ในกรณีที่ฉันเปลี่ยนใจ และฉันก็คาดเดาว่าด้วย LISP บางคนสามารถสำรองข้อมูลอัตโนมัติก่อนที่จะเปิดใช้งานใด ๆ
Charles Roberto Canato

-2

หากคุณเลือกหนึ่งในตัวรูปแบบจากเพียงแค่แสดงความคิดเห็นออกสายที่ช่วยให้รูปแบบที่กำหนดเองในของคุณ M-x customize-themes~/.emacs

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.