Hoe kan ik: genieten van belangrijke modestrings bij gebruik van powerline met gebruikspakket?

Ik kan <: delight hoofdmodusstrings (in de modusregel) van use-package niet gebruiken omdat ik powerline met initialiseer use-package zelf.

Mijn gok is dat het : delight gedeelte niet op de verkeerde tijd voorkomt en mode-line-format is ingesteld zonder de bijgewerkte snaren in de major mode (het werkt prima als powerline is : uitgeschakeld ).

Wat is een goede aanpak om dit probleem op te lossen?

Here is my init-mode-line.el for reference. New link: init-mode-line.el.

0
Ik weet eigenlijk niet hoe de integratie van het gebruikspakket werkt, maar ik zie in het commentaar (delight ...) formulier in je link dat je het argument mist: major van elk van de hoofdmodusverklaringen. Raadpleeg de documentatie op emacswiki.org/emacs/DelightedModes
toegevoegd de auteur Mark Ireland, de bron
Wel, je hebt naar dat bestand verwezen "ter referentie", en dat blok met opmerkingen bevat de enige instantie van het woord "delight" in het bestand. Toon ons de code die u eigenlijk wilt gebruiken. Als u een versie weergeeft die u niet gebruikt, helpt niemand dit.
toegevoegd de auteur Mark Ireland, de bron
Dat opmerking deel was niet in gebruik (sommige oude kopie pasta). Ik gebruik delight in combinatie met use-package waarmee we die : delight -snelkoppeling kunnen gebruiken: het wordt op dezelfde manier gebruikt verminderen wordt gebruikt . Echter, zoals ik al zei, het werkt prima als ik de powerline uitschakel.
toegevoegd de auteur chyx, de bron
Zie bijvoorbeeld init-css.el . Het probleem leeft niet in de manier waarop ik het zoekwoord : delight gebruik, maar hoe ik modus-regelindeling instel. Dat is waarom ik alleen init-mode-line.el (bijgewerkte link). Sorry als dit onduidelijk was.
toegevoegd de auteur chyx, de bron

1 antwoord

Het korte antwoord is dat powerline en delight niet rechtstreeks compatibel zijn; maar ik heb een wijziging aangebracht in delight (nieuwe versie 1.04) om een ​​dergelijke integratie in het algemeen mogelijk te maken, en ik heb een delight-powerline bibliotheek die daar bovenop bouwt om specifiek met powerline om te gaan.

Origineel antwoord volgt ...


Nou ik heb je config geprobeerd. Mijn eerste opmerking is dat het lijkt alsof u de standaard modelenamen opgeeft in de meeste van uw: delight-specificaties, wat nogal raar is. bijv. org-mode reeds gebruikt "Org" als zijn modenaam - het heeft zeker weinig zin om te gebruiken: delight org-mode "Org" .

However I can confirm that delight is still working for major modes with powerline enabled, because if I visit an org-mode buffer and check mode-name it tells me (inhibit-mode-name-delight "Org" "Org") (normally those two values wouldn't be identical, of course, but see above...)

Dit is een genot om de modusregel de verrukkelijke waarde te laten zien zonder ook die aangepaste waarde in andere contexten weer te geven (bijv. Mx describe-mode die ook de -modus weergeeft -name ).

Dit suggereert dat powerline format-mode-line expliciet aanroept, wat de trigger van delight (via advies) is om de originele versie van de naam te tonen. (nb Het is een beetje onzichtbaar, maar format-mode-line is niet geroepen door de normale modusregelcode, maar zo voorzien dat anders dingen kunnen constructies in de moduslijn weergeven.)

Dat is een incompatibiliteit tussen de twee bibliotheken, vrees ik.

Je kunt het advies van uitschakelen delight (nadat het is geladen) zoals:

(ad-disable-advice 'format-mode-line 'around 'delighted-modes-are-glum)
(ad-activate 'format-mode-line)

Hiermee wordt je powerline-uitvoer gefixeerd, maar dit betekent ook dat al het andere dat de modenaam van een hoofdmodus weergeeft ook de verrukte versie zal tonen. Dat is waarschijnlijk nog steeds de voorkeur voor jou.

Het zou een beter advies zijn om alleen te handelen wanneer powerline wordt gebeld. Dit was geen optie voor het renderen van de standaardmoduslijn, maar zou zeker voor gevallen zoals deze kunnen worden gedaan.

Ik heb een delight-powerline.el integratiebibliotheek geüpload naar de EmacsWiki.

Merk op dat hiervoor de al even nieuwe versie 1.04 van delight.el vereist is .

2
toegevoegd
Dat kwam omdat delight.el zelf de variabele niet al declareerde. Ik heb dat opgelost in de bijgewerkte bibliotheken - zie de link in het herziene antwoord.
toegevoegd de auteur Mark Ireland, de bron
Sinds de introductie van lexicale binding, is het een goede vorm om defvar alle dynamische variabelen in het geval dat ze worden verwezen in een bibliotheek die lexicale binding gebruikt. Ik weet eigenlijk niet of setq-local op een niet-gerapporteerde variabele ook dynamisch zal zijn. Ik had het probleem eenvoudigweg opgemerkt en ging met de standaard aanpak.
toegevoegd de auteur Mark Ireland, de bron
Ik wil de overhand hebben over hoe de dingen eruit zien (en zo het - zeer onwaarschijnlijke - hernoemen van de modi die ik gebruik voorkomen). Meer dan dat, het hebben van een klaar om te worden aangepast blok voor elk pakket (hoewel suboptimaal) bevalt me ​​het beste :). Ik heb je fragment geprobeerd en het doet het werk, dank je. Ten derde, waarom gebruik je defvar + setq voor inhibit-mode-name-delight ? Wat is het verschil met setq-standaard alleen in dat geval?
toegevoegd de auteur chyx, de bron
Ok, zal ZO VLUG MOGELIJK updaten :) het heeft wat tijd nodig om klaar te zijn voor een update door list-packages denk ik. Maar mijn vraag was meer een educatief doel: het werkte ook alleen met setq-default .
toegevoegd de auteur chyx, de bron
Oh oke, ik begrijp het. Bedankt voor de verduidelijking en je werk aan delight.el :)
toegevoegd de auteur chyx, de bron