Page MenuHomePhorge

No OneTemporary

Size
49 KB
Referenced Files
None
Subscribers
None
diff --git a/doc.org b/doc.org
index 4ab48e2..56ef358 100644
--- a/doc.org
+++ b/doc.org
@@ -1,197 +1,242 @@
#+PROPERTY: header-args :exports code
#+HTML_HEAD: <link rel="stylesheet" href="./style.css">
* Intro
Using [[https://github.com/arximboldi/lager][lager]] with Qt/QML
- tusooa, maintainer of [[https://kazv.chat][kazv]], [[https://lily-is.land/tusooa]] [[https://invent.kde.org/tusooaw]]
- Dmitry Kazakov, developer of [[https://krita.org][Krita]], https://invent.kde.org/dkazakov
* What is lager?
- Library to help with *value-oriented design*
- Store application state as a *value* type (*model*)
- State transformations are described in pure functions (*reducers*)
- src_c++{auto update(Model, Action) -> Model;}
- *Actions* are also value types
* What is a value type?
- Copyable
- Equality comparable
#+BEGIN_SRC c++
T a = ...;
T b = a;
REQUIRE(a == b);
#+END_SRC
- Identity does not depend on a reference
#+BEGIN_SRC c++
// Assuming member-wise operator==()
// not a value type
struct Person
{
std::string name;
std::vector<std::weak_ptr<Person>> contacts;
};
// value type
struct Person
{
using IdType = std::string;
IdType id;
std::string name;
std::vector<IdType> contacts;
};
#+END_SRC
- You can still use pointers internally
* Basic example of a value-oriented program
=logic.hpp=
#+INCLUDE: "src/basic-example/logic.hpp" src c++
=logic.cpp=
#+INCLUDE: "src/basic-example/logic.cpp" src c++
=main.cpp=
#+INCLUDE: "src/basic-example/main.cpp" src c++
The basic example just covered doesn't even make use of lager (!!!)
* Benefits of using lager?
- Testability
- libkazv: [[https://lily-is.land/kazv/libkazv][76.9%]] test coverage
- libQuotient: [[https://sonarcloud.io/component_measures?metric=coverage&selected=quotient-im_libQuotient%3AQuotient&id=quotient-im_libQuotient][41.6%]] (raw), 46.9% (adjusted)
-=test.cpp=
-#+INCLUDE: "src/basic-example/test.cpp" src c++
+ =test.cpp=
+ #+INCLUDE: "src/basic-example/test.cpp" src c++
- Offload work into worker threads
-#+BEGIN_SRC c++
- QtConcurrent::run([model]() { // capture model by value
- save(model);
- });
-#+END_SRC
+ #+BEGIN_SRC c++
+ QtConcurrent::run([model]() { // capture model by value
+ save(model);
+ });
+ #+END_SRC
- Performance of copying? Structural sharing, [[https://github.com/arximboldi/immer][immer]] containers (constant time copy ctor)
- In Qt: QSharedDataPointer (simple, all-or-nothing sharing)
- Undo/redo for free
- History is a list of models
- Undo/redo = changing the current index
- Normal actions = push a new model onto the list
- [[https://github.com/arximboldi/ewig][ewig]], a text editor https://github.com/arximboldi/ewig/blob/master/src/ewig/buffer.hpp
* How to do IO?
** Reducers revisited
- Recall reducers are pure functions
- src_c++{auto update(Model, Action) -> Model;}
- But also src_c++{auto update(Model, Action) -> std::pair<Model, Effect>;}
- What is an *effect*? A (maybe non-pure) function that takes a *context* as an argument.
- A *store* contains the model and the context. It also has an event loop. Reducers will be run in the event loop.
- The store can be constructed with *dependencies*, which can be accessed through the context.
- The context can also be used to dispatch actions.
=model.hpp=
#+INCLUDE: "src/effects-example/model.hpp" src c++
=main.cpp=
#+INCLUDE: "src/effects-example/main.cpp" src c++
* How can lager help you integrate value-oriented design with a Qt application?
** Missing part: view
- In the example, src_c++{show()} is the view.
- We want to show the state as a src_c++{QWidget} or src_c++{QQuickItem}.
- Signal/slot connections to update display values.
- [[https://sinusoid.es/lager/cursors.html][Cursors]] (I wrote that doc!)
- src_c++{lager::reader} - readonly cursors
- src_c++{reader}s can be watched
- src_c++{lager::store} is a reader
- src_c++{map}-transformations
#+BEGIN_SRC c++
lager::reader<A> ra = ...;
lager::reader<B> rb = ra.map([](const A &a) -> B {
return ...;
});
#+END_SRC
- and lense transformations (Dmitry will cover this later)
- src_c++{LAGER_QT} and src_c++{LAGER_QT_READER}
=demo-app.hpp=
#+INCLUDE: "src/qml-example/demo-app.hpp" src c++
=demo-app.cpp=
#+INCLUDE: "src/qml-example/demo-app.cpp" src c++
=Main.qml=
-#+INCLUDE: "src/qml-example/Main.qml" src c++
+#+INCLUDE: "src/qml-example/Main.qml" src qml
=main.cpp=
#+INCLUDE: "src/qml-example/main.cpp" src c++
* Practical application problems
Or: what =lager='s author didn't tell you
* List views
[[https://github.com/arximboldi/lager/issues/179]]
** Number as model in QML ListView
=model.hpp=
#+INCLUDE: "src/list-view/model.hpp" src c++
=demo-app.hpp=
#+INCLUDE: "src/list-view/demo-app.hpp" src c++
=demo-list.hpp=
#+INCLUDE: "src/list-view/demo-list.hpp" src c++
=demo-item.hpp=
#+INCLUDE: "src/list-view/demo-item.hpp" src c++
=demo-app.cpp=
#+INCLUDE: "src/list-view/demo-app.cpp" src c++
=demo-list.cpp=
#+INCLUDE: "src/list-view/demo-list.cpp" src c++
=demo-item.cpp=
#+INCLUDE: "src/list-view/demo-item.cpp" src c++
=Main.qml=
#+INCLUDE: "src/list-view/Main.qml" src qml
- Problem: scroll will reset every time we add/remove an item
- https://github.com/arximboldi/lager/issues/179
** Using a src_c++{QAbstractListModel}
=demo-list.hpp=
#+INCLUDE: "src/list-view-qt-model/demo-list.hpp" src c++
=demo-list.cpp=
#+INCLUDE: "src/list-view-qt-model/demo-list.cpp" src c++
=Main.qml=
#+INCLUDE: "src/list-view-qt-model/Main.qml" src qml
* Post-dispatch then-continuations
[[https://github.com/arximboldi/lager/issues/96]], [[https://github.com/arximboldi/lager/issues/106]]
#+BEGIN_SRC c++
// XXX Why can't I just use QMetaObject::invokeMethod
// with QueuedConnection?
// Let's bear with it now. Will go back to this later.
QTimer::singleShot(100, obj, [=]() {
repl(obj, ctx);
});
#+END_SRC
- If I use src_c++{invokeMethod}, what happens if I enter 2?
- src_c++{IncrementTwiceAction} is dispatched (reducer is queued)
- src_c++{repl} is queued
- Reducer is run
- Effect is run
- Two src_c++{IncrementAction} are dispatched
- src_c++{repl} is run
- It blocks the thread! Execution of reducers for the src_c++{IncrementAction}s are not run!
- We want it to run after src_c++{IncrementTwiceAction} has really finished
- If action A's effect dispatches B and B's effect dispatches C and C's effect dispatches D
- Want the chain to finish all the way
- lager does not support this (limited support at the time)
- Resolved by creating [[https://lily-is.land/kazv/libkazv/-/blob/servant/src/store/store.hpp?ref_type=heads][another kind of store]]
- Effects return a Promise (for C++ programmers, it's more like src_c++{std::future}) instead of void
- src_c++{dispatch} can be src_c++{then}-ed, the callback will be run after the returned future becomes ready
#+INCLUDE: "src/libkazvstore-example/main.cpp" src c++
* Offloading work into worker threads
- src_c++{ctx.dispatch} is thread-safe, can use it to pass down the result of a heavy computation
- When heavy computation needs to be atomic, put the event loop into a worker thread
- Create a secondary store that has an event loop in the UI thread
- This is needed because cursor operations are not thread-safe [[https://github.com/arximboldi/lager/issues/118]]
=model.hpp=
#+INCLUDE: "src/multithreading/model.hpp" src c++
=demo-app.hpp=
#+INCLUDE: "src/multithreading/demo-app.hpp" src c++
=demo-app.cpp=
#+INCLUDE: "src/multithreading/demo-app.cpp" src c++
=Main.qml=
#+INCLUDE: "src/multithreading/Main.qml" src qml
+
+- No matter if you move the event loop into a worker thread, you want the cursor transformations to be efficient
+ #+BEGIN_SRC c++
+ struct Model
+ {
+ immer::flex_vector<Item> a;
+ immer::flex_vector<Item> b;
+ };
+ // Combining collection A and B
+
+ // Don't
+ QmlWrapper::QmlWrapper(lager::reader<Model> model)
+ : LAGER_QT(combined)(model.map([](const Model &m) {
+ return m.a + m.b; // O(log(|a|+|b|)) time!
+ }))
+ , LAGER_QT(count)(combined.map([](const immer::flex_vector<Item> &c) {
+ return c.size();
+ }))
+ {}
+
+ auto QmlWrapper::at(int i) -> QmlItem *
+ {
+ return new QmlItem(LAGER_QT(combined).map([i](const immer::flex_vector<Item> &c) {
+ return i >= c.size() ? Item{} : c.at(i);
+ }));
+ }
+
+ // Do
+ QmlWrapper::QmlWrapper(lager::reader<Model> model)
+ : LAGER_QT(count)(model.map([](const Model &m) {
+ return m.a.size() + m.b.size(); // O(1) time!
+ }))
+ {}
+
+ auto QmlWrapper::at(int i) -> QmlItem *
+ {
+ return new QmlItem(LAGER_QT(combined).map([i](const immer::flex_vector<Item> &c) {
+ return i >= m.a.size() + m.b.size()
+ ? Item{}
+ : i >= m.a.size()
+ ? m.b[i - m.a.size()]
+ : m.a[i];
+ }));
+ }
+ #+END_SRC
* Using src_c++{lager::state} (leave to Dmitry)
* Appendix
** Calculating libQuotient coverage adjusted
libQuotient includes the generated csapi folder into coverage, while libkazv does not. Here is the code that calculates the coverage of libQuotient excluding the csapi folder.
#+NAME: libquotient-coverage
#+BEGIN_SRC perl
my $csapiCoverage = 0.169;
my $csapiUncovered = 1_668;
my $totalLines = 11_229;
my $totalUncovered = 6_561;
my $csapiLines = $csapiUncovered / (1-$csapiCoverage);
my $remainingLines = $totalLines - $csapiLines;
my $remainingUncovered = $totalUncovered - $csapiUncovered;
my $remainingCoverage = 1 - $remainingUncovered / $remainingLines;
$remainingCoverage;
#+END_SRC
#+RESULTS: libquotient-coverage
: 0.46940827964562
diff --git a/style.css b/style.css
index a69c797..119f142 100644
--- a/style.css
+++ b/style.css
@@ -1,1990 +1,1991 @@
.src {
- text-wrap: wrap;
+ text-wrap: auto;
+ overflow-wrap: break-word;
}
.outline-2 {
min-height: 100vh;
}
body {
color: #2e3436;
background-color: #eeeeec;
}
.org-abbrev-table-name {
/* abbrev-table-name */
color: #a40000;
}
.org-ansi-color-black {
/* ansi-color-black */
color: #2e3436;
background-color: #2e3436;
}
.org-ansi-color-blue {
/* ansi-color-blue */
color: #3465a4;
background-color: #3465a4;
}
.org-ansi-color-bold {
/* ansi-color-bold */
font-weight: bold;
}
.org-ansi-color-bright-black {
/* ansi-color-bright-black */
color: #5f615c;
background-color: #5f615c;
}
.org-ansi-color-bright-blue {
/* ansi-color-bright-blue */
color: #729fcf;
background-color: #729fcf;
}
.org-ansi-color-bright-cyan {
/* ansi-color-bright-cyan */
color: #34e2e2;
background-color: #34e2e2;
}
.org-ansi-color-bright-green {
/* ansi-color-bright-green */
color: #8ae234;
background-color: #8ae234;
}
.org-ansi-color-bright-magenta {
/* ansi-color-bright-magenta */
color: #ad7fa8;
background-color: #ad7fa8;
}
.org-ansi-color-bright-red {
/* ansi-color-bright-red */
color: #ef2929;
background-color: #ef2929;
}
.org-ansi-color-bright-white {
/* ansi-color-bright-white */
color: #eeeeec;
background-color: #eeeeec;
}
.org-ansi-color-bright-yellow {
/* ansi-color-bright-yellow */
color: #fce94f;
background-color: #fce94f;
}
.org-ansi-color-cyan {
/* ansi-color-cyan */
color: #06989a;
background-color: #06989a;
}
.org-ansi-color-faint {
}
.org-ansi-color-fast-blink {
}
.org-ansi-color-green {
/* ansi-color-green */
color: #4e9a06;
background-color: #4e9a06;
}
.org-ansi-color-inverse {
}
.org-ansi-color-italic {
/* ansi-color-italic */
font-style: italic;
}
.org-ansi-color-magenta {
/* ansi-color-magenta */
color: #75507b;
background-color: #75507b;
}
.org-ansi-color-red {
/* ansi-color-red */
color: #cc0000;
background-color: #cc0000;
}
.org-ansi-color-slow-blink {
}
.org-ansi-color-underline {
/* ansi-color-underline */
text-decoration: underline;
}
.org-ansi-color-white {
/* ansi-color-white */
color: #d3d7cf;
background-color: #d3d7cf;
}
.org-ansi-color-yellow {
/* ansi-color-yellow */
color: #c4a000;
background-color: #c4a000;
}
.org-bold {
/* bold */
font-weight: bold;
}
.org-bold-italic {
/* bold-italic */
font-weight: bold;
font-style: italic;
}
.org-border {
}
.org-bracket {
}
.org-browse-url-button {
/* browse-url-button */
color: #204a87;
text-decoration: underline;
}
.org-buffer-menu-buffer {
/* buffer-menu-buffer */
font-weight: bold;
}
.org-builtin {
/* font-lock-builtin-face */
color: #75507b;
}
.org-button {
/* button */
color: #204a87;
text-decoration: underline;
}
.org-c-annotation {
/* c-annotation-face */
color: #204a87;
font-weight: bold;
}
.org-c-nonbreakable-space {
/* c-nonbreakable-space-face */
background-color: #ff4500;
}
.org-calendar-month-header {
/* calendar-month-header */
color: #a40000;
}
.org-calendar-today {
/* calendar-today */
text-decoration: underline;
}
.org-calendar-weekday-header {
/* calendar-weekday-header */
color: #204a87;
font-weight: bold;
}
.org-calendar-weekend-header {
/* calendar-weekend-header */
color: #5f615c;
font-style: italic;
}
.org-child-frame-border {
}
.org-comint-highlight-input {
/* comint-highlight-input */
font-weight: bold;
}
.org-comint-highlight-prompt {
/* comint-highlight-prompt */
color: #204a87;
font-weight: bold;
}
.org-comment {
/* font-lock-comment-face */
color: #5f615c;
font-style: italic;
}
.org-comment-delimiter {
/* font-lock-comment-delimiter-face */
color: #5f615c;
font-style: italic;
}
.org-completions-common-part {
/* completions-common-part */
color: #0000cd;
}
.org-completions-first-difference {
/* completions-first-difference */
font-weight: bold;
}
.org-completions-group-separator {
/* completions-group-separator */
color: #7f7f7f;
text-decoration: line-through;
}
.org-completions-group-title {
/* completions-group-title */
color: #7f7f7f;
font-style: italic;
}
.org-completions-highlight {
/* completions-highlight */
background-color: #babdb6;
}
.org-confusingly-reordered {
/* confusingly-reordered */
text-decoration: underline;
}
.org-constant {
/* font-lock-constant-face */
color: #204a87;
font-weight: bold;
}
.org-cursor {
/* cursor */
background-color: #204a87;
}
.org-custom-button {
/* custom-button */
color: #000000;
background-color: #d3d3d3;
}
.org-custom-button-mouse {
/* custom-button-mouse */
color: #000000;
background-color: #e5e5e5;
}
.org-custom-button-pressed {
/* custom-button-pressed */
color: #000000;
background-color: #d3d3d3;
}
.org-custom-button-pressed-unraised {
/* custom-button-pressed-unraised */
color: #8b008b;
text-decoration: underline;
}
.org-custom-button-unraised {
/* custom-button-unraised */
text-decoration: underline;
}
.org-custom-changed {
/* custom-changed */
color: #ffffff;
background-color: #0000ff;
}
.org-custom-comment {
/* custom-comment */
background-color: #d9d9d9;
}
.org-custom-comment-tag {
/* custom-comment-tag */
color: #00008b;
}
.org-custom-documentation {
}
.org-custom-face-tag {
/* custom-face-tag */
color: #0000ff;
font-weight: bold;
}
.org-custom-group-subtitle {
/* custom-group-subtitle */
font-weight: bold;
}
.org-custom-group-tag {
/* custom-group-tag */
color: #0000ff;
font-size: 120%;
font-weight: bold;
}
.org-custom-group-tag-1 {
/* custom-group-tag-1 */
color: #ff0000;
font-size: 120%;
font-weight: bold;
}
.org-custom-invalid {
/* custom-invalid */
color: #ffff00;
background-color: #ff0000;
}
.org-custom-link {
/* custom-link */
color: #204a87;
text-decoration: underline;
}
.org-custom-modified {
/* custom-modified */
color: #ffffff;
background-color: #0000ff;
}
.org-custom-rogue {
/* custom-rogue */
color: #ffc0cb;
background-color: #000000;
}
.org-custom-saved {
/* custom-saved */
text-decoration: underline;
}
.org-custom-set {
/* custom-set */
color: #0000ff;
background-color: #ffffff;
}
.org-custom-state {
/* custom-state */
color: #006400;
}
.org-custom-themed {
/* custom-themed */
color: #ffffff;
background-color: #0000ff;
}
.org-custom-variable-button {
/* custom-variable-button */
font-weight: bold;
text-decoration: underline;
}
.org-custom-variable-obsolete {
/* custom-variable-obsolete */
color: #0000ff;
}
.org-custom-variable-tag {
/* custom-variable-tag */
color: #0000ff;
font-weight: bold;
}
.org-custom-visibility {
/* custom-visibility */
color: #204a87;
font-size: 80%;
text-decoration: underline;
}
.org-delimiter {
}
.org-diary {
/* diary */
color: #ff0000;
}
.org-diff-added {
/* diff-added */
background-color: #eeffee;
}
.org-diff-changed {
}
.org-diff-changed-unspecified {
/* diff-changed-unspecified */
background-color: #e5e5e5;
}
.org-diff-context {
}
.org-diff-error {
/* diff-error */
color: #ff0000;
background-color: #000000;
font-weight: bold;
}
.org-diff-file-header {
/* diff-file-header */
background-color: #bfbfbf;
font-weight: bold;
}
.org-diff-function {
/* diff-function */
background-color: #d9d9d9;
}
.org-diff-header {
/* diff-header */
background-color: #d9d9d9;
}
.org-diff-hunk-header {
/* diff-hunk-header */
background-color: #d9d9d9;
}
.org-diff-index {
/* diff-index */
background-color: #bfbfbf;
font-weight: bold;
}
.org-diff-indicator-added {
/* diff-indicator-added */
color: #22aa22;
background-color: #eeffee;
}
.org-diff-indicator-changed {
/* diff-indicator-changed */
color: #aaaa22;
}
.org-diff-indicator-removed {
/* diff-indicator-removed */
color: #aa2222;
background-color: #ffeeee;
}
.org-diff-nonexistent {
/* diff-nonexistent */
background-color: #bfbfbf;
font-weight: bold;
}
.org-diff-refine-added {
/* diff-refine-added */
background-color: #bbffbb;
}
.org-diff-refine-changed {
/* diff-refine-changed */
background-color: #ffff55;
}
.org-diff-refine-removed {
/* diff-refine-removed */
background-color: #ffcccc;
}
.org-diff-removed {
/* diff-removed */
background-color: #ffeeee;
}
.org-dired-broken-symlink {
/* dired-broken-symlink */
color: #ffff00;
background-color: #ff0000;
font-weight: bold;
}
.org-dired-directory {
/* dired-directory */
color: #a40000;
}
.org-dired-flagged {
/* dired-flagged */
color: #a40000;
}
.org-dired-header {
/* dired-header */
color: #204a87;
}
.org-dired-ignored {
/* dired-ignored */
color: #7f7f7f;
}
.org-dired-mark {
/* dired-mark */
color: #204a87;
font-weight: bold;
}
.org-dired-marked {
/* dired-marked */
color: #ce5c00;
}
.org-dired-perm-write {
/* dired-perm-write */
color: #5f615c;
font-style: italic;
}
.org-dired-set-id {
/* dired-set-id */
color: #a40000;
}
.org-dired-special {
/* dired-special */
color: #b35000;
}
.org-dired-symlink {
/* dired-symlink */
color: #346604;
}
.org-dired-warning {
/* dired-warning */
color: #a40000;
}
.org-doc {
/* font-lock-doc-face */
color: #5c3566;
}
.org-doc-markup {
/* font-lock-doc-markup-face */
color: #204a87;
font-weight: bold;
}
.org-eldoc-highlight-function-argument {
/* eldoc-highlight-function-argument */
font-weight: bold;
}
.org-elisp-shorthand-font-lock {
/* elisp-shorthand-font-lock-face */
color: #00ffff;
}
.org-epa-field-body {
/* epa-field-body */
font-style: italic;
}
.org-epa-field-name {
/* epa-field-name */
font-weight: bold;
}
.org-epa-mark {
/* epa-mark */
color: #ff0000;
font-weight: bold;
}
.org-epa-string {
/* epa-string */
color: #00008b;
}
.org-epa-validity-disabled {
/* epa-validity-disabled */
font-style: italic;
}
.org-epa-validity-high {
/* epa-validity-high */
font-weight: bold;
}
.org-epa-validity-low {
/* epa-validity-low */
font-style: italic;
}
.org-epa-validity-medium {
/* epa-validity-medium */
font-style: italic;
}
.org-error {
/* error */
color: #a40000;
}
.org-escape {
/* font-lock-escape-face */
font-weight: bold;
}
.org-escape-glyph {
/* escape-glyph */
color: #a40000;
}
.org-eww-form-checkbox {
/* eww-form-checkbox */
color: #000000;
background-color: #d3d3d3;
}
.org-eww-form-file {
/* eww-form-file */
color: #000000;
background-color: #808080;
}
.org-eww-form-select {
/* eww-form-select */
color: #000000;
background-color: #d3d3d3;
}
.org-eww-form-submit {
/* eww-form-submit */
color: #000000;
background-color: #808080;
}
.org-eww-form-text {
/* eww-form-text */
color: #ffffff;
background-color: #505050;
}
.org-eww-form-textarea {
/* eww-form-textarea */
color: #000000;
background-color: #C0C0C0;
}
.org-eww-invalid-certificate {
/* eww-invalid-certificate */
color: #ff0000;
font-weight: bold;
}
.org-eww-valid-certificate {
/* eww-valid-certificate */
color: #228b22;
font-weight: bold;
}
.org-file-name-shadow {
/* file-name-shadow */
color: #7f7f7f;
}
.org-fill-column-indicator {
/* fill-column-indicator */
color: #7f7f7f;
}
.org-fixed-pitch {
}
.org-fixed-pitch-serif {
}
.org-fringe {
/* fringe */
background-color: #d3d7cf;
}
.org-function-call {
/* font-lock-function-call-face */
color: #a40000;
}
.org-function-name {
/* font-lock-function-name-face */
color: #a40000;
}
.org-glyphless-char {
/* glyphless-char */
font-size: 60%;
}
.org-gnus-button {
/* gnus-button */
font-weight: bold;
}
.org-gnus-emphasis-bold {
/* gnus-emphasis-bold */
font-weight: bold;
}
.org-gnus-emphasis-bold-italic {
/* gnus-emphasis-bold-italic */
font-weight: bold;
font-style: italic;
}
.org-gnus-emphasis-highlight-words {
/* gnus-emphasis-highlight-words */
color: #ffff00;
background-color: #000000;
}
.org-gnus-emphasis-italic {
/* gnus-emphasis-italic */
font-style: italic;
}
.org-gnus-emphasis-strikethru {
/* gnus-emphasis-strikethru */
text-decoration: line-through;
}
.org-gnus-emphasis-underline {
/* gnus-emphasis-underline */
text-decoration: underline;
}
.org-gnus-emphasis-underline-bold {
/* gnus-emphasis-underline-bold */
font-weight: bold;
text-decoration: underline;
}
.org-gnus-emphasis-underline-bold-italic {
/* gnus-emphasis-underline-bold-italic */
font-weight: bold;
font-style: italic;
text-decoration: underline;
}
.org-gnus-emphasis-underline-italic {
/* gnus-emphasis-underline-italic */
font-style: italic;
text-decoration: underline;
}
.org-gnus-group-mail-1 {
/* gnus-group-mail-1 */
color: #5c3566;
font-weight: bold;
}
.org-gnus-group-mail-1-empty {
/* gnus-group-mail-1-empty */
color: #cd1076;
}
.org-gnus-group-mail-2 {
/* gnus-group-mail-2 */
color: #204a87;
font-weight: bold;
}
.org-gnus-group-mail-2-empty {
/* gnus-group-mail-2-empty */
color: #cd6090;
}
.org-gnus-group-mail-3 {
/* gnus-group-mail-3 */
color: #4e9a06;
font-weight: bold;
}
.org-gnus-group-mail-3-empty {
/* gnus-group-mail-3-empty */
color: #8b008b;
}
.org-gnus-group-mail-low {
/* gnus-group-mail-low */
color: #888a85;
}
.org-gnus-group-mail-low-empty {
/* gnus-group-mail-low-empty */
color: #8b0a50;
}
.org-gnus-group-news-1 {
/* gnus-group-news-1 */
color: #5c3566;
font-weight: bold;
}
.org-gnus-group-news-1-empty {
/* gnus-group-news-1-empty */
color: #228b22;
}
.org-gnus-group-news-2 {
/* gnus-group-news-2 */
color: #204a87;
font-weight: bold;
}
.org-gnus-group-news-2-empty {
/* gnus-group-news-2-empty */
color: #53868b;
}
.org-gnus-group-news-3 {
/* gnus-group-news-3 */
color: #a40000;
font-weight: bold;
}
.org-gnus-group-news-3-empty {
}
.org-gnus-group-news-4 {
/* gnus-group-news-4 */
color: #7a4c02;
font-weight: bold;
}
.org-gnus-group-news-4-empty {
}
.org-gnus-group-news-5 {
/* gnus-group-news-5 */
color: #ce5c00;
font-weight: bold;
}
.org-gnus-group-news-5-empty {
}
.org-gnus-group-news-6 {
/* gnus-group-news-6 */
font-weight: bold;
}
.org-gnus-group-news-6-empty {
}
.org-gnus-group-news-low {
/* gnus-group-news-low */
color: #888a85;
}
.org-gnus-group-news-low-empty {
/* gnus-group-news-low-empty */
color: #006400;
}
.org-gnus-header {
/* gnus-header */
font-size: 110%;
}
.org-gnus-header-content {
/* gnus-header-content */
color: #4e9a06;
}
.org-gnus-header-from {
/* gnus-header-from */
color: #c4a000;
font-weight: bold;
}
.org-gnus-header-name {
/* gnus-header-name */
color: #204a87;
}
.org-gnus-header-newsgroups {
/* gnus-header-newsgroups */
color: #888a85;
}
.org-gnus-header-subject {
/* gnus-header-subject */
color: #a40000;
}
.org-gnus-signature {
/* gnus-signature */
font-style: italic;
}
.org-gnus-splash {
/* gnus-splash */
color: #888888;
}
.org-gnus-summary-cancelled {
/* gnus-summary-cancelled */
color: #ffff00;
background-color: #000000;
}
.org-gnus-summary-high-ancient {
/* gnus-summary-high-ancient */
color: #4169e1;
font-weight: bold;
}
.org-gnus-summary-high-read {
/* gnus-summary-high-read */
color: #006400;
font-weight: bold;
}
.org-gnus-summary-high-ticked {
/* gnus-summary-high-ticked */
color: #b22222;
font-weight: bold;
}
.org-gnus-summary-high-undownloaded {
/* gnus-summary-high-undownloaded */
color: #008b8b;
font-weight: bold;
}
.org-gnus-summary-high-unread {
/* gnus-summary-high-unread */
font-weight: bold;
}
.org-gnus-summary-low-ancient {
/* gnus-summary-low-ancient */
color: #4169e1;
font-style: italic;
}
.org-gnus-summary-low-read {
/* gnus-summary-low-read */
color: #006400;
font-style: italic;
}
.org-gnus-summary-low-ticked {
/* gnus-summary-low-ticked */
color: #b22222;
font-style: italic;
}
.org-gnus-summary-low-undownloaded {
/* gnus-summary-low-undownloaded */
color: #008b8b;
font-style: italic;
}
.org-gnus-summary-low-unread {
/* gnus-summary-low-unread */
font-style: italic;
}
.org-gnus-summary-normal-ancient {
/* gnus-summary-normal-ancient */
color: #4169e1;
}
.org-gnus-summary-normal-read {
/* gnus-summary-normal-read */
color: #006400;
}
.org-gnus-summary-normal-ticked {
/* gnus-summary-normal-ticked */
color: #b22222;
}
.org-gnus-summary-normal-undownloaded {
/* gnus-summary-normal-undownloaded */
color: #008b8b;
}
.org-gnus-summary-normal-unread {
}
.org-gnus-summary-selected {
/* gnus-summary-selected */
text-decoration: underline;
}
.org-header-line {
/* header-line */
color: #333333;
background-color: #e5e5e5;
}
.org-header-line-highlight {
}
.org-help-argument-name {
/* help-argument-name */
font-style: italic;
}
.org-help-for-help-header {
/* help-for-help-header */
font-size: 126%;
}
.org-help-key-binding {
/* help-key-binding */
color: #00008b;
background-color: #f5f5f5;
}
.org-highlight {
/* highlight */
background-color: #babdb6;
}
.org-holiday {
/* holiday */
background-color: #ffc0cb;
}
.org-homoglyph {
/* homoglyph */
color: #a40000;
}
.org-icon {
}
.org-icon-button {
/* icon-button */
color: #000000;
background-color: #808080;
}
.org-internal-border {
}
.org-isearch {
/* isearch */
color: #ffffff;
background-color: #ce5c00;
}
.org-isearch-fail {
/* isearch-fail */
background-color: #ffc1c1;
}
.org-isearch-group-1 {
/* isearch-group-1 */
color: #b0e2ff;
background-color: #f000f0;
}
.org-isearch-group-2 {
/* isearch-group-2 */
color: #b0e2ff;
background-color: #a000a0;
}
.org-italic {
/* italic */
font-style: italic;
}
.org-keyword {
/* font-lock-keyword-face */
color: #346604;
}
.org-lazy-highlight {
/* lazy-highlight */
background-color: #e9b96e;
}
.org-line-number-current-line {
/* line-number-current-line */
color: #7f7f7f;
background-color: #eeeeec;
}
.org-line-number-major-tick {
/* line-number-major-tick */
background-color: #d9d9d9;
font-weight: bold;
}
.org-line-number-minor-tick {
/* line-number-minor-tick */
background-color: #f2f2f2;
font-weight: bold;
}
.org-link {
/* link */
color: #204a87;
text-decoration: underline;
}
.org-link-visited {
/* link-visited */
color: #3465a4;
text-decoration: underline;
}
.org-match {
/* match */
background-color: #fff68f;
}
.org-menu {
}
.org-message-cited-text-1 {
/* message-cited-text-1 */
color: #ff0000;
}
.org-message-cited-text-2 {
/* message-cited-text-2 */
color: #8b0000;
}
.org-message-cited-text-3 {
/* message-cited-text-3 */
color: #698b22;
}
.org-message-cited-text-4 {
/* message-cited-text-4 */
color: #36648b;
}
.org-message-header-cc {
/* message-header-cc */
color: #c4a000;
}
.org-message-header-name {
/* message-header-name */
color: #204a87;
}
.org-message-header-newsgroups {
/* message-header-newsgroups */
color: #00008b;
font-weight: bold;
font-style: italic;
}
.org-message-header-other {
/* message-header-other */
color: #c17d11;
}
.org-message-header-subject {
/* message-header-subject */
color: #a40000;
}
.org-message-header-to {
/* message-header-to */
color: #c4a000;
font-weight: bold;
}
.org-message-header-xheader {
/* message-header-xheader */
color: #0000ff;
}
.org-message-mml {
/* message-mml */
color: #228b22;
}
.org-message-separator {
/* message-separator */
color: #4e9a06;
font-weight: bold;
}
.org-message-signature-separator {
/* message-signature-separator */
font-weight: bold;
}
.org-minibuffer-prompt {
/* minibuffer-prompt */
color: #204a87;
font-weight: bold;
}
.org-misc-punctuation {
}
.org-mm-command-output {
/* mm-command-output */
color: #cd0000;
}
.org-mm-uu-extract {
/* mm-uu-extract */
color: #006400;
background-color: #ffffe0;
}
.org-mode-line {
/* mode-line */
color: #2e3436;
background-color: #d3d7cf;
}
.org-mode-line-active {
/* mode-line-active */
color: #2e3436;
background-color: #d3d7cf;
}
.org-mode-line-buffer-id {
/* mode-line-buffer-id */
font-weight: bold;
}
.org-mode-line-emphasis {
/* mode-line-emphasis */
font-weight: bold;
}
.org-mode-line-highlight {
}
.org-mode-line-inactive {
/* mode-line-inactive */
color: #2e3436;
background-color: #888a85;
}
.org-modus-themes-active-blue {
}
.org-modus-themes-active-cyan {
}
.org-modus-themes-active-green {
}
.org-modus-themes-active-magenta {
}
.org-modus-themes-active-red {
}
.org-modus-themes-active-yellow {
}
.org-modus-themes-bold {
}
.org-modus-themes-box-button {
}
.org-modus-themes-box-button-pressed {
}
.org-modus-themes-completion-match-0 {
}
.org-modus-themes-completion-match-1 {
}
.org-modus-themes-completion-match-2 {
}
.org-modus-themes-completion-match-3 {
}
.org-modus-themes-completion-selected {
}
.org-modus-themes-completion-selected-popup {
}
.org-modus-themes-diff-added {
}
.org-modus-themes-diff-changed {
}
.org-modus-themes-diff-focus-added {
}
.org-modus-themes-diff-focus-changed {
}
.org-modus-themes-diff-focus-removed {
}
.org-modus-themes-diff-heading {
}
.org-modus-themes-diff-refine-added {
}
.org-modus-themes-diff-refine-changed {
}
.org-modus-themes-diff-refine-removed {
}
.org-modus-themes-diff-removed {
}
.org-modus-themes-fixed-pitch {
}
.org-modus-themes-fringe-blue {
}
.org-modus-themes-fringe-cyan {
}
.org-modus-themes-fringe-green {
}
.org-modus-themes-fringe-magenta {
}
.org-modus-themes-fringe-red {
}
.org-modus-themes-fringe-yellow {
}
.org-modus-themes-grue {
}
.org-modus-themes-grue-active {
}
.org-modus-themes-grue-background-active {
}
.org-modus-themes-grue-background-intense {
}
.org-modus-themes-grue-background-refine {
}
.org-modus-themes-grue-background-subtle {
}
.org-modus-themes-grue-nuanced {
}
.org-modus-themes-heading-0 {
}
.org-modus-themes-heading-1 {
}
.org-modus-themes-heading-2 {
}
.org-modus-themes-heading-3 {
}
.org-modus-themes-heading-4 {
}
.org-modus-themes-heading-5 {
}
.org-modus-themes-heading-6 {
}
.org-modus-themes-heading-7 {
}
.org-modus-themes-heading-8 {
}
.org-modus-themes-hl-line {
}
.org-modus-themes-intense-blue {
}
.org-modus-themes-intense-cyan {
}
.org-modus-themes-intense-green {
}
.org-modus-themes-intense-magenta {
}
.org-modus-themes-intense-neutral {
}
.org-modus-themes-intense-red {
}
.org-modus-themes-intense-yellow {
}
.org-modus-themes-key-binding {
}
.org-modus-themes-lang-error {
}
.org-modus-themes-lang-note {
}
.org-modus-themes-lang-warning {
}
.org-modus-themes-link-broken {
}
.org-modus-themes-link-symlink {
}
.org-modus-themes-mark-alt {
}
.org-modus-themes-mark-del {
}
.org-modus-themes-mark-sel {
}
.org-modus-themes-mark-symbol {
}
.org-modus-themes-markup-code {
}
.org-modus-themes-markup-macro {
}
.org-modus-themes-markup-verbatim {
}
.org-modus-themes-nuanced-blue {
}
.org-modus-themes-nuanced-cyan {
}
.org-modus-themes-nuanced-green {
}
.org-modus-themes-nuanced-magenta {
}
.org-modus-themes-nuanced-red {
}
.org-modus-themes-nuanced-yellow {
}
.org-modus-themes-prompt {
}
.org-modus-themes-pseudo-header {
}
.org-modus-themes-refine-blue {
}
.org-modus-themes-refine-cyan {
}
.org-modus-themes-refine-green {
}
.org-modus-themes-refine-magenta {
}
.org-modus-themes-refine-red {
}
.org-modus-themes-refine-yellow {
}
.org-modus-themes-reset-hard {
}
.org-modus-themes-reset-soft {
}
.org-modus-themes-search-success {
}
.org-modus-themes-search-success-lazy {
}
.org-modus-themes-search-success-modeline {
}
.org-modus-themes-slant {
}
.org-modus-themes-special-calm {
}
.org-modus-themes-special-cold {
}
.org-modus-themes-special-mild {
}
.org-modus-themes-special-warm {
}
.org-modus-themes-subtle-blue {
}
.org-modus-themes-subtle-cyan {
}
.org-modus-themes-subtle-green {
}
.org-modus-themes-subtle-magenta {
}
.org-modus-themes-subtle-neutral {
}
.org-modus-themes-subtle-red {
}
.org-modus-themes-subtle-yellow {
}
.org-modus-themes-tab-active {
}
.org-modus-themes-tab-backdrop {
}
.org-modus-themes-tab-inactive {
}
.org-modus-themes-ui-variable-pitch {
}
.org-modus-themes-variable-pitch {
}
.org-mouse {
}
.org-mouse-drag-and-drop-region {
/* mouse-drag-and-drop-region */
background-color: #babdb6;
}
.org-negation-char {
}
.org-next-error {
/* next-error */
background-color: #babdb6;
}
.org-next-error-message {
/* next-error-message */
background-color: #babdb6;
}
.org-nobreak-hyphen {
/* nobreak-hyphen */
color: #a52a2a;
}
.org-nobreak-space {
/* nobreak-space */
color: #a40000;
text-decoration: underline;
}
.org-number {
}
.org-operator {
}
.org-org-agenda-calendar-event {
/* org-agenda-calendar-event */
color: #2e3436;
background-color: #eeeeec;
}
.org-org-agenda-calendar-sexp {
/* org-agenda-calendar-sexp */
color: #2e3436;
background-color: #eeeeec;
}
.org-org-agenda-clocking {
/* org-agenda-clocking */
background-color: #8cc4ff;
}
.org-org-agenda-column-dateline {
/* org-agenda-column-dateline */
background-color: #e5e5e5;
}
.org-org-agenda-current-time {
/* org-agenda-current-time */
color: #b8860b;
}
.org-org-agenda-date {
/* org-agenda-date */
color: #0000ff;
}
.org-org-agenda-date-today {
/* org-agenda-date-today */
color: #0000ff;
font-weight: bold;
font-style: italic;
}
.org-org-agenda-date-weekend {
/* org-agenda-date-weekend */
color: #0000ff;
font-weight: bold;
}
.org-org-agenda-date-weekend-today {
/* org-agenda-date-weekend-today */
color: #0000ff;
font-weight: bold;
font-style: italic;
}
.org-org-agenda-diary {
/* org-agenda-diary */
color: #2e3436;
background-color: #eeeeec;
}
.org-org-agenda-dimmed-todo {
/* org-agenda-dimmed-todo-face */
color: #7f7f7f;
}
.org-org-agenda-done {
/* org-agenda-done */
color: #228b22;
}
.org-org-agenda-filter-category {
/* org-agenda-filter-category */
color: #2e3436;
background-color: #d3d7cf;
}
.org-org-agenda-filter-effort {
/* org-agenda-filter-effort */
color: #2e3436;
background-color: #d3d7cf;
}
.org-org-agenda-filter-regexp {
/* org-agenda-filter-regexp */
color: #2e3436;
background-color: #d3d7cf;
}
.org-org-agenda-filter-tags {
/* org-agenda-filter-tags */
color: #2e3436;
background-color: #d3d7cf;
}
.org-org-agenda-restriction-lock {
/* org-agenda-restriction-lock */
background-color: #eeeeee;
}
.org-org-agenda-structure {
/* org-agenda-structure */
color: #0000ff;
}
.org-org-agenda-structure-secondary {
/* org-agenda-structure-secondary */
color: #0000ff;
}
.org-org-archived {
/* org-archived */
color: #7f7f7f;
}
.org-org-block {
/* org-block */
color: #7f7f7f;
}
.org-org-block-begin-line {
/* org-block-begin-line */
color: #5f615c;
font-style: italic;
}
.org-org-block-end-line {
/* org-block-end-line */
color: #5f615c;
font-style: italic;
}
.org-org-checkbox {
/* org-checkbox */
font-weight: bold;
}
.org-org-checkbox-statistics-done {
/* org-checkbox-statistics-done */
color: #228b22;
font-weight: bold;
}
.org-org-checkbox-statistics-todo {
/* org-checkbox-statistics-todo */
color: #ff0000;
font-weight: bold;
}
.org-org-cite {
/* org-cite */
color: #204a87;
text-decoration: underline;
}
.org-org-cite-key {
/* org-cite-key */
color: #204a87;
text-decoration: underline;
}
.org-org-clock-overlay {
/* org-clock-overlay */
color: #000000;
background-color: #d3d3d3;
}
.org-org-code {
/* org-code */
color: #7f7f7f;
}
.org-org-column {
/* org-column */
background-color: #e5e5e5;
}
.org-org-column-title {
/* org-column-title */
background-color: #e5e5e5;
font-weight: bold;
text-decoration: underline;
}
.org-org-date {
/* org-date */
color: #a020f0;
text-decoration: underline;
}
.org-org-date-selected {
/* org-date-selected */
color: #ff0000;
}
.org-org-default {
/* org-default */
color: #2e3436;
background-color: #eeeeec;
}
.org-org-dispatcher-highlight {
/* org-dispatcher-highlight */
color: #00008b;
background-color: #c6e2ff;
font-weight: bold;
}
.org-org-document-info {
/* org-document-info */
color: #191970;
}
.org-org-document-info-keyword {
/* org-document-info-keyword */
color: #7f7f7f;
}
.org-org-document-title {
/* org-document-title */
color: #191970;
font-weight: bold;
}
.org-org-done {
/* org-done */
color: #228b22;
font-weight: bold;
}
.org-org-drawer {
/* org-drawer */
color: #0000ff;
}
.org-org-ellipsis {
/* org-ellipsis */
color: #b8860b;
text-decoration: underline;
}
.org-org-footnote {
/* org-footnote */
color: #a020f0;
text-decoration: underline;
}
.org-org-formula {
/* org-formula */
color: #b22222;
}
.org-org-headline-done {
/* org-headline-done */
color: #bc8f8f;
}
.org-org-headline-todo {
/* org-headline-todo */
color: #8b0000;
}
.org-org-hide {
/* org-hide */
color: #eeeeec;
}
.org-org-imminent-deadline {
/* org-imminent-deadline */
color: #a40000;
}
.org-org-inline-src-block {
/* org-inline-src-block */
color: #7f7f7f;
}
.org-org-latex-and-related {
/* org-latex-and-related */
color: #8b4513;
}
.org-org-level-1 {
/* org-level-1 */
color: #a40000;
}
.org-org-level-2 {
/* org-level-2 */
color: #b35000;
}
.org-org-level-3 {
/* org-level-3 */
color: #346604;
}
.org-org-level-4 {
/* org-level-4 */
color: #5f615c;
font-style: italic;
}
.org-org-level-5 {
/* org-level-5 */
color: #204a87;
}
.org-org-level-6 {
/* org-level-6 */
color: #204a87;
font-weight: bold;
}
.org-org-level-7 {
/* org-level-7 */
color: #75507b;
}
.org-org-level-8 {
/* org-level-8 */
color: #5c3566;
}
.org-org-link {
/* org-link */
color: #204a87;
text-decoration: underline;
}
.org-org-list-dt {
/* org-list-dt */
font-weight: bold;
}
.org-org-macro {
/* org-macro */
color: #8b4513;
}
.org-org-meta-line {
/* org-meta-line */
color: #5f615c;
font-style: italic;
}
.org-org-mode-line-clock {
/* org-mode-line-clock */
color: #2e3436;
background-color: #d3d7cf;
}
.org-org-mode-line-clock-overrun {
/* org-mode-line-clock-overrun */
color: #2e3436;
background-color: #ff0000;
}
.org-org-priority {
/* org-priority */
color: #346604;
}
.org-org-property-value {
/* org-property-value */
color: #2e3436;
background-color: #eeeeec;
}
.org-org-quote {
/* org-quote */
color: #7f7f7f;
}
.org-org-scheduled {
/* org-scheduled */
color: #006400;
}
.org-org-scheduled-previously {
/* org-scheduled-previously */
color: #b22222;
}
.org-org-scheduled-today {
/* org-scheduled-today */
color: #006400;
}
.org-org-sexp-date {
/* org-sexp-date */
color: #a020f0;
}
.org-org-special-keyword {
/* org-special-keyword */
color: #346604;
}
.org-org-table {
/* org-table */
color: #0000ff;
}
.org-org-table-header {
/* org-table-header */
color: #000000;
background-color: #d3d3d3;
}
.org-org-tag {
/* org-tag */
font-weight: bold;
}
.org-org-tag-group {
/* org-tag-group */
font-weight: bold;
}
.org-org-target {
/* org-target */
text-decoration: underline;
}
.org-org-time-grid {
/* org-time-grid */
color: #b8860b;
}
.org-org-todo {
/* org-todo */
color: #ff0000;
font-weight: bold;
}
.org-org-upcoming-deadline {
/* org-upcoming-deadline */
color: #b22222;
}
.org-org-upcoming-distant-deadline {
/* org-upcoming-distant-deadline */
color: #2e3436;
background-color: #eeeeec;
}
.org-org-verbatim {
/* org-verbatim */
color: #7f7f7f;
}
.org-org-verse {
/* org-verse */
color: #7f7f7f;
}
.org-org-warning {
/* org-warning */
color: #a40000;
}
.org-outline-1 {
/* outline-1 */
color: #a40000;
}
.org-outline-2 {
/* outline-2 */
color: #b35000;
}
.org-outline-3 {
/* outline-3 */
color: #346604;
}
.org-outline-4 {
/* outline-4 */
color: #5f615c;
font-style: italic;
}
.org-outline-5 {
/* outline-5 */
color: #204a87;
}
.org-outline-6 {
/* outline-6 */
color: #204a87;
font-weight: bold;
}
.org-outline-7 {
/* outline-7 */
color: #75507b;
}
.org-outline-8 {
/* outline-8 */
color: #5c3566;
}
.org-preprocessor {
/* font-lock-preprocessor-face */
color: #75507b;
}
.org-property-name {
/* font-lock-property-name-face */
color: #b35000;
}
.org-property-use {
/* font-lock-property-use-face */
color: #b35000;
}
.org-punctuation {
}
.org-query-replace {
/* query-replace */
color: #ffffff;
background-color: #ce5c00;
}
.org-regexp {
/* font-lock-regexp-face */
color: #5c3566;
}
.org-regexp-grouping-backslash {
/* font-lock-regexp-grouping-backslash */
font-weight: bold;
}
.org-regexp-grouping-construct {
/* font-lock-regexp-grouping-construct */
font-weight: bold;
}
.org-region {
/* region */
background-color: #babdb6;
}
.org-scroll-bar {
}
.org-secondary-selection {
/* secondary-selection */
background-color: #8cc4ff;
}
.org-separator-line {
/* separator-line */
background-color: #a0a0a0;
font-size: 10%;
}
.org-shadow {
/* shadow */
color: #7f7f7f;
}
.org-show-paren-match {
/* show-paren-match */
background-color: #40e0d0;
}
.org-show-paren-match-expression {
/* show-paren-match-expression */
background-color: #40e0d0;
}
.org-show-paren-mismatch {
/* show-paren-mismatch */
color: #ffffff;
background-color: #a020f0;
}
.org-shr-abbreviation {
/* shr-abbreviation */
text-decoration: underline;
}
.org-shr-code {
}
.org-shr-h1 {
/* shr-h1 */
font-size: 130%;
font-weight: bold;
}
.org-shr-h2 {
/* shr-h2 */
font-weight: bold;
}
.org-shr-h3 {
/* shr-h3 */
font-style: italic;
}
.org-shr-h4 {
}
.org-shr-h5 {
}
.org-shr-h6 {
}
.org-shr-link {
/* shr-link */
color: #204a87;
text-decoration: underline;
}
.org-shr-mark {
/* shr-mark */
color: #000000;
background-color: #ffff00;
}
.org-shr-selected-link {
/* shr-selected-link */
color: #204a87;
background-color: #ff0000;
text-decoration: underline;
}
.org-shr-strike-through {
/* shr-strike-through */
text-decoration: line-through;
}
.org-shr-sup {
/* shr-sup */
font-size: 80%;
}
.org-shr-text {
/* shr-text */
font-size: 110%;
}
.org-string {
/* font-lock-string-face */
color: #5c3566;
}
.org-success {
/* success */
color: #4e9a06;
}
.org-tab-bar {
/* tab-bar */
color: #000000;
background-color: #d9d9d9;
}
.org-tab-bar-tab {
/* tab-bar-tab */
color: #000000;
background-color: #d9d9d9;
}
.org-tab-bar-tab-group-current {
/* tab-bar-tab-group-current */
color: #000000;
background-color: #d9d9d9;
font-weight: bold;
}
.org-tab-bar-tab-inactive {
/* tab-bar-tab-inactive */
color: #000000;
background-color: #bfbfbf;
}
.org-tab-line {
/* tab-line */
color: #000000;
background-color: #d9d9d9;
font-size: 90%;
}
.org-table-cell {
/* table-cell */
color: #e5e5e5;
background-color: #0000ff;
}
.org-tabulated-list-fake-header {
/* tabulated-list-fake-header */
font-weight: bold;
text-decoration: underline;
text-decoration: overline;
}
.org-tool-bar {
/* tool-bar */
color: #000000;
background-color: #bfbfbf;
}
.org-tooltip {
/* tooltip */
color: #000000;
background-color: #ffffe0;
}
.org-trailing-whitespace {
/* trailing-whitespace */
background-color: #ef2929;
}
.org-tty-menu-disabled {
/* tty-menu-disabled-face */
color: #d3d3d3;
background-color: #0000ff;
}
.org-tty-menu-enabled {
/* tty-menu-enabled-face */
color: #ffff00;
background-color: #0000ff;
font-weight: bold;
}
.org-tty-menu-selected {
/* tty-menu-selected-face */
background-color: #ff0000;
}
.org-type {
/* font-lock-type-face */
color: #204a87;
}
.org-underline {
/* underline */
text-decoration: underline;
}
.org-variable-name {
/* font-lock-variable-name-face */
color: #b35000;
}
.org-variable-pitch {
}
.org-variable-pitch-text {
/* variable-pitch-text */
font-size: 110%;
}
.org-variable-use {
/* font-lock-variable-use-face */
color: #b35000;
}
.org-vc-conflict-state {
}
.org-vc-edited-state {
}
.org-vc-git-log-edit-summary-max-warning {
/* vc-git-log-edit-summary-max-warning */
color: #a40000;
}
.org-vc-git-log-edit-summary-target-warning {
/* vc-git-log-edit-summary-target-warning */
color: #ce5c00;
}
.org-vc-locally-added-state {
}
.org-vc-locked-state {
}
.org-vc-missing-state {
}
.org-vc-needs-update-state {
}
.org-vc-removed-state {
}
.org-vc-state-base {
}
.org-vc-up-to-date-state {
}
.org-vertical-border {
}
.org-warning {
/* warning */
color: #ce5c00;
}
.org-warning-1 {
/* font-lock-warning-face */
color: #a40000;
}
.org-widget-button {
/* widget-button */
font-weight: bold;
}
.org-widget-button-pressed {
/* widget-button-pressed */
color: #ff0000;
}
.org-widget-documentation {
/* widget-documentation */
color: #006400;
}
.org-widget-field {
/* widget-field */
background-color: #d9d9d9;
}
.org-widget-inactive {
/* widget-inactive */
color: #7f7f7f;
}
.org-widget-single-line-field {
/* widget-single-line-field */
background-color: #d9d9d9;
}
.org-window-divider {
/* window-divider */
color: #999999;
}
.org-window-divider-first-pixel {
/* window-divider-first-pixel */
color: #cccccc;
}
.org-window-divider-last-pixel {
/* window-divider-last-pixel */
color: #666666;
}

File Metadata

Mime Type
text/x-diff
Expires
Tue, Nov 26, 8:10 AM (1 d, 11 h)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
40057
Default Alt Text
(49 KB)

Event Timeline