| ... | ... | @@ -81,7 +81,192 @@ in |
| 81 | 81 | # use a git-specific email |
| 82 | 82 | git.userEmail = "git@paperclover.net"; |
| 83 | 83 | |
| 84 | | jujutsu.enable = true; |
| 84 | jujutsu = { |
| 85 | enable = true; |
| 86 | # my workflow is based on creating changes and editing them. while they |
| 87 | # are in progress the description starts with "WIP: " |
| 88 | settings = rec { |
| 89 | colors = { |
| 90 | bookmark = "green"; |
| 91 | bookmarks = colors.bookmark; |
| 92 | local_bookmarks = colors.bookmarks; |
| 93 | remote_bookmarks = colors.bookmark; |
| 94 | "working_copy bookmark" = "bright green"; |
| 95 | "working_copy bookmarks" = colors."working_copy bookmark"; |
| 96 | "working_copy local_bookmarks" = colors."working_copy bookmark"; |
| 97 | "working_copy remote_bookmarks" = colors."working_copy bookmark"; |
| 98 | |
| 99 | "author" = { |
| 100 | fg = "white"; |
| 101 | bold = false; |
| 102 | italic = true; |
| 103 | }; |
| 104 | "working_copy author" = colors.author; |
| 105 | |
| 106 | desc = { |
| 107 | bold = false; |
| 108 | fg = "bright white"; |
| 109 | }; |
| 110 | description = colors.desc; |
| 111 | cc_wip = { |
| 112 | fg = "bright yellow"; |
| 113 | bold = true; |
| 114 | reverse = true; |
| 115 | }; |
| 116 | cc_header = { |
| 117 | bold = true; |
| 118 | fg = "bright white"; |
| 119 | }; |
| 120 | cc_feat = "green"; |
| 121 | cc_fix = "red"; |
| 122 | cc_hotfix = "red"; |
| 123 | cc_chore = "yellow"; |
| 124 | cc_test = "blue"; |
| 125 | cc_other = "blue"; |
| 126 | cc_scope = { |
| 127 | fg = "cyan"; |
| 128 | bold = false; |
| 129 | italic = true; |
| 130 | }; |
| 131 | |
| 132 | active_marker = { |
| 133 | fg = "bright magenta"; |
| 134 | bold = true; |
| 135 | reverse = true; |
| 136 | }; |
| 137 | conflict_marker = { |
| 138 | fg = "bright red"; |
| 139 | bold = true; |
| 140 | reverse = true; |
| 141 | }; |
| 142 | |
| 143 | timestamp = "bright black"; |
| 144 | commit_id = { |
| 145 | fg = "bright black"; |
| 146 | bold = false; |
| 147 | }; |
| 148 | muted = "bright black"; |
| 149 | }; |
| 150 | # ui.graph.style = "square"; |
| 151 | revsets = { |
| 152 | log = "ancestors(description(regex:\"^(WIP:|\\\\s*$)\"), 3) | ancestors(immutable_heads(), 2) | ancestors(visible_heads(), 2)"; |
| 153 | short-prefixes = "(trunk()..@)::"; |
| 154 | }; |
| 155 | templates.log = "hl_wip(self)"; |
| 156 | |
| 157 | template-aliases = { |
| 158 | # log template, highlighting the WIP commits by making everything else faded out |
| 159 | "hl_wip(commit)" = '' |
| 160 | if(commit.root(), format_root_commit(commit), |
| 161 | label("__commit__", |
| 162 | format_short_commit_header(commit) ++ "\n" ++ |
| 163 | format_commit_description(commit) |
| 164 | ) |
| 165 | ) |
| 166 | ''; |
| 167 | |
| 168 | "format_commit_description(commit)" = '' |
| 169 | label("desc", format_commit_firstline(commit.description().first_line())) ++ |
| 170 | "\n" ++ if( |
| 171 | commit.description().starts_with("WIP:") || commit.current_working_copy(), |
| 172 | commit.description().remove_prefix(commit.description().first_line()).remove_prefix("\n").trim_end() ++ "\n ", |
| 173 | if(commit.description().remove_prefix(commit.description().first_line()).trim().len() > 0, |
| 174 | label("muted", lines_collapsed(commit.description().lines().filter(|x| x.trim().len() > 0).len() - 1)), |
| 175 | " " |
| 176 | ) |
| 177 | ) |
| 178 | ''; |
| 179 | "lines_collapsed(count)" = |
| 180 | ''("[" ++ stringify(count ++ " line" ++ if(count == 1, "", "s")) ++ " collapsed]\n")''; |
| 181 | "format_commit_firstline(line)" = '' |
| 182 | if(line.starts_with("WIP:"), |
| 183 | label("cc_wip", " WIP ") ++ " " ++ format_commit_firstline_a_wip(line.remove_prefix("WIP:").trim()), |
| 184 | format_commit_firstline_a_wip(line) |
| 185 | ) |
| 186 | ''; |
| 187 | "format_commit_firstline_a_wip(line)" = '' |
| 188 | if(line.starts_with("feat:") || line.starts_with("feat("), |
| 189 | label("cc_feat", "feat") ++ format_commit_firstline_a_cc_type(line.remove_prefix("feat")), |
| 190 | if(line.starts_with("fix:") || line.starts_with("fix("), |
| 191 | label("cc_fix", "fix") ++ format_commit_firstline_a_cc_type(line.remove_prefix("fix")), |
| 192 | if(line.starts_with("hotfix:") || line.starts_with("hotfix("), |
| 193 | label("cc_hotfix", "hotfix") ++ format_commit_firstline_a_cc_type(line.remove_prefix("hotfix")), |
| 194 | if(line.starts_with("chore:") || line.starts_with("chore("), |
| 195 | label("cc_chore", "chore") ++ format_commit_firstline_a_cc_type(line.remove_prefix("chore")), |
| 196 | if(line.starts_with("test:") || line.starts_with("test("), |
| 197 | label("cc_other", "test") ++ format_commit_firstline_a_cc_type(line.remove_prefix("test")), |
| 198 | if(line.starts_with("refactor:") || line.starts_with("refactor("), |
| 199 | label("cc_other", "refactor") ++ format_commit_firstline_a_cc_type(line.remove_prefix("refactor")), |
| 200 | if(line.starts_with("perf:") || line.starts_with("perf("), |
| 201 | label("cc_other", "perf") ++ format_commit_firstline_a_cc_type(line.remove_prefix("perf")), |
| 202 | if(line.starts_with("lib:") || line.starts_with("lib("), |
| 203 | label("cc_other", "lib") ++ format_commit_firstline_a_cc_type(line.remove_prefix("lib")), |
| 204 | label("cc_header", line) |
| 205 | )))))))) |
| 206 | ''; |
| 207 | "format_commit_firstline_a_cc_type(rest)" = '' |
| 208 | if(rest.starts_with("(") && rest.contains(")"), |
| 209 | format_firstline_cc_scope(rest, index_of_close_paren(rest)), |
| 210 | format_firstline_a_cc(rest)) |
| 211 | ''; |
| 212 | "format_firstline_cc_scope(rest, index)" = '' |
| 213 | label("cc_scope", rest.substr(0, index)) ++ format_firstline_a_cc(rest.substr(index, rest.len())) |
| 214 | ''; |
| 215 | "format_firstline_a_cc(rest)" = '' |
| 216 | if(rest.starts_with(":"), |
| 217 | label("muted", ":") ++ label("cc_header", rest.remove_prefix(":")), |
| 218 | label("cc_header", rest) |
| 219 | ) |
| 220 | ''; |
| 221 | # sorry! |
| 222 | "index_of_close_paren(line)" = '' |
| 223 | stringify(if(line.substr(1, 2) == ")", "A", |
| 224 | if(line.substr(2, 3) == ")", "AA", |
| 225 | if(line.substr(3, 4) == ")", "AAA", |
| 226 | if(line.substr(4, 5) == ")", "AAAA", |
| 227 | if(line.substr(5, 6) == ")", "AAAAA", |
| 228 | if(line.substr(6, 7) == ")", "AAAAAA", |
| 229 | if(line.substr(7, 8) == ")", "AAAAAAA", |
| 230 | if(line.substr(8, 9) == ")", "AAAAAAAA", |
| 231 | if(line.substr(9, 10) == ")","AAAAAAAAA", |
| 232 | if(line.substr(10, 11) == ")", "AAAAAAAAAA", |
| 233 | if(line.substr(11, 12) == ")", "AAAAAAAAAAA", |
| 234 | if(line.substr(12, 13) == ")", "AAAAAAAAAAAA", |
| 235 | if(line.substr(13, 14) == ")", "AAAAAAAAAAAAA", |
| 236 | if(line.substr(14, 15) == ")", "AAAAAAAAAAAAAA", |
| 237 | if(line.substr(15, 16) == ")", "AAAAAAAAAAAAAAA", |
| 238 | if(line.substr(16, 17) == ")", "AAAAAAAAAAAAAAAA", |
| 239 | if(line.substr(17, 18) == ")", "AAAAAAAAAAAAAAAAA", |
| 240 | if(line.substr(18, 19) == ")", "AAAAAAAAAAAAAAAAAA", |
| 241 | if(line.substr(19, 20) == ")", "AAAAAAAAAAAAAAAAAAA", |
| 242 | if(line.substr(20, 21) == ")", "AAAAAAAAAAAAAAAAAAAA", |
| 243 | "AAAAAAAAAAAAAAAAAAAAA" |
| 244 | ))))))))))))))))))))).len() + 1 |
| 245 | ''; |
| 246 | |
| 247 | "format_short_signature(signature)" = "signature.name()"; |
| 248 | "format_timestamp(timestamp)" = "timestamp.ago()"; |
| 249 | "format_short_commit_header(commit)" = '' |
| 250 | separate(" ", |
| 251 | if(commit.current_working_copy(), label("active_marker", " ACTIVE ")), |
| 252 | if(commit.conflict(), label("conflict_marker", " CONFLICT ")), |
| 253 | format_short_change_id_with_hidden_and_divergent_info(commit), |
| 254 | format_short_signature(commit.author()), |
| 255 | label("muted", "|"), |
| 256 | if(commit.description().trim().len() > 0, label("muted", format_timestamp(commit_timestamp(commit)))), |
| 257 | commit.bookmarks(), |
| 258 | commit.tags(), |
| 259 | commit.working_copies(), |
| 260 | label("muted", "(") ++ |
| 261 | format_short_commit_id(commit.commit_id()) ++ |
| 262 | label("muted", ")"), |
| 263 | if(config("ui.show-cryptographic-signatures").as_boolean(), |
| 264 | format_short_cryptographic_signature(commit.signature())), |
| 265 | ) |
| 266 | ''; |
| 267 | }; |
| 268 | }; |
| 269 | }; |
| 85 | 270 | |
| 86 | 271 | ssh = { |
| 87 | 272 | enable = true; |