Saya memiliki kolom dalam tabel mode-org dengan angka di setiap sel. Saya ingin mengubah warna latar belakang sel menjadi merah jika angkanya di bawah 1 atau di atas 2.
Bagaimana saya bisa melakukan itu?
org-table
formatting
formula
Trevoke
sumber
sumber
org-table-edit-formulas
aliasC-c '
danorg-table-toggle-coordinate-overlays
aliasC-c }
memberikan petunjuk tentang cara menerapkan fitur penyorotan jenis ini. Mungkin guru elisp akan memberikan beberapa petunjuk atau contoh tambahan.Jawaban:
Saya dapat memformat seluruh tabel untuk bekerja dengan beberapa Elisp:
Rumus dievaluasi untuk konten sel, dan dikonversi ke warna menggunakan gradien.
File organisasi termasuk kode:
sumber
cs/itpl
melakukan interpolasi linier sederhana, dancs/gradient
menggunakannya untuk menginterpolasi warna menggunakan daftar titik data dan penghentian warna. Dari sana, itu hanya menambahkan hamparan seperti pada jawaban Anda. Contohnya agak non-sepele karena ia berkonsultasi data dari tempat lain dalam tabel.org-table-map-tables
.Menggunakan overlay adalah cara saya ingin melakukannya. Saya dapat menghubungkan ke org-ctrl-c-ctrl-c-hook. Itu berarti saya dapat menekan Cc Cc untuk menjalankan pemeriksaan.
Saya perlu memastikan bahwa saya berada di dalam tabel dan menjalankan ini untuk semua sel.
Maka saya mungkin perlu menghubungkan ke fungsi penyelarasan untuk mengulang ulang overlay atau setidaknya menghapusnya.
Kode ini akan membuat latar belakang sel berwarna merah untuk sel tempat saya berada jika nilainya kurang dari 1 atau lebih besar dari 2 ketika saya menekan Cc Cc ... Tapi masih bermasalah dan akan menghapus overlay jika salah satunya tidak t cocok dengan aturan.
sumber
Ini belum merupakan jawaban tetapi saya ingin melacak hal-hal yang saya temukan di sini, karena mereka dapat memberikan ide kepada orang lain.
Dimungkinkan untuk mengubah nilai sel itu sendiri secara kondisional :
Kita dapat membuat fungsi pemformatan di elisp dan kemudian memanggilnya dari baris rumus:
Dan itu bisa digunakan seperti:
Saya pikir apa yang saya inginkan mungkin memerlukan pembuatan overlay.
sumber
Emacs menyediakan fungsi
hi-lock-face-buffer
M-s h ryang menyoroti ekspresi reguler di buffer saat Anda mengetik.Yang kita butuhkan adalah ekspresi reguler yang cocok dengan angka apa pun yang bukan 1 atau 2 dan berada dalam sel tabel. Coba ini:
(Anda dapat mengingat ekspresi sebelumnya dengan M-ndan M-p.)
sumber