Mam kolumnę w tabeli trybu org z liczbami w każdej komórce. Chciałbym zmienić kolor tła komórki na czerwony, jeśli liczba jest mniejsza niż 1 lub większa niż 2.
Jak mogę to zrobić?
org-table
formatting
formula
Trevoke
źródło
źródło
org-table-edit-formulas
aka, jakC-c '
iorg-table-toggle-coordinate-overlays
akaC-c }
dostarczają wskazówek, jak zaimplementować tego rodzaju funkcję podświetlania. Być może elisp guru dostarczy dodatkowych wskazówek lub przykładów.Odpowiedzi:
Mam formatowanie całego stołu do pracy z niektórymi Elisp:
Formuła jest oceniana pod kątem zawartości komórek i przekształcana w kolor za pomocą gradientu.
Plik organizacji zawierający kod:
źródło
cs/itpl
wykonuje prostą interpolację liniową ics/gradient
wykorzystuje ją do interpolacji koloru za pomocą listy punktów danych i punktów zatrzymania kolorów. Stamtąd dodaje tylko nakładkę, jak w twojej odpowiedzi. Przykład jest nieco nietrywialny, ponieważ sprawdza dane z innego miejsca w tabeli.org-table-map-tables
.Używanie nakładki jest tym, jak chcę to zrobić. Mogę podpiąć się do org-ctrl-c-ctrl-c-hook. Oznacza to, że mogę nacisnąć Cc Cc, aby uruchomić sprawdzanie.
Muszę poprawnie sprawdzić, czy jestem w tabeli i uruchomić to dla wszystkich komórek.
Następnie prawdopodobnie potrzebuję podpiąć się do funkcji wyrównania, aby albo powtórzyć nakładki, albo przynajmniej je usunąć.
Ten kod sprawi, że tło komórki będzie czerwone dla komórki, w której jestem, jeśli wartość jest mniejsza niż 1 lub większa niż 2 po naciśnięciu Cc Cc ... Ale nadal jest błędna i usunie nakładki, jeśli jeden z nich nie zrobi dopasować zasady.
źródło
To jeszcze nie jest odpowiedź, ale chcę śledzić rzeczy, które tu odkrywam, ponieważ mogą dać pomysł komuś innemu.
Możliwe jest warunkowe zmodyfikowanie wartości samej komórki :
Możemy utworzyć funkcję formatowania w elisp, a następnie wywołać ją z wiersza formuły:
I można go używać w następujący sposób:
Myślę, że to, czego chcę, może wymagać utworzenia nakładki.
źródło
Emacs udostępnia funkcję,
hi-lock-face-buffer
M-s h rktóra podświetla wyrażenie regularne w buforze podczas pisania.Wszystko czego potrzebujemy to wyrażenie regularne, które pasuje do dowolnej liczby, która nie jest 1 lub 2 i znajduje się w komórce tabeli. Spróbuj tego:
(Możesz przywołać poprzednie wyrażenia za pomocą M-ni M-p.)
źródło