|
|
ru.linux- RU.LINUX --------------------------------------------------------------------- From : Kirill Frolov 2:5030/827.2 08 Feb 2004 11:00:31 To : All Subject : Re: slrn суксь... Delete/Catch up не хочу -------------------------------------------------------------------------------- On Mon, 2 Feb 2004 03:11:02 +0000 (UTC), Kirill Frolov wrote: KF> Знаю, в gnus есть такая вещь, забыл как называется, но суть в том, что KF> сообщение в группе можно пометить как *просмотренное*, а не удалённое. То KF> есть при следующем заходе в группу его там снова будет видно, но будет KF> также видно, что оно уже просмотренное, а не новое. ~/News/Score: Score:: -10 ~Age: 7 Score:: -20 ~Age: 30 Очень сильно помогло. Теперь старые сообщение хоть по Score видно, верней наоборот не видно. KF> Ещё хочу кнопки "-" и "+" для регулирования скоринга для конкретных KF> "тредов". Сделать можно, но если менять score на лету, то slrn же всё KF> заново пересортирует... Это наверное не побороть. :-( Это можно побороть. Клавишами "-" и "+" регулируются очки текущего сообщения и ответов на него, клавишами Esc-"-" и Esc-"+" -- всех сообщений с точно такой же темой. По-умолчанию прибавляется/убавляется по 10 очков, но это задаётся предваряющей комбинацией клавиш <Esc>-число (ну это prefix argument, как в emacs или vim). % vim: set syntax=slang: variable expire_days = 10; variable score_step = 10; define score_by_ref (score) { variable msgid = extract_article_header("Message-Id"); set_header_score (get_header_score() + score); call("header_bob"); do { if (is_substr( extract_article_header("References"), msgid) ) { set_header_score (get_header_score() + score); } } while (header_down(1)); ()=locate_header_by_msgid (msgid, 0); msgid = str_quote_string (msgid, "\\^$[].*+?", '\\'); return strcat ("Message-ID: ", strcat (msgid, strcat ("\nReferences: ", msgid))); } define score_by_subj (score) { variable msgid = extract_article_header("Message-Id"); variable subj = str_quote_string ( extract_article_header("Subject"), "\\^$[].*+?", '\\' ); variable subjpat = strcat ("[A-Za-z0-9^]:[ ]", subj); call("header_bob"); do { variable s=extract_article_header("Subject"); if (string_match (s, subj, 1) or string_match (s, subjpat, 1) ) { set_header_score (get_header_score() + score); } } while (header_down(1)); ()=locate_header_by_msgid (msgid, 0); return strcat ("Subject: ", subj); } define score_add (score, by_rule) { variable file, time, arg; arg = get_prefix_arg(); if (arg != -1) { if (score >= 0) score = arg; else score = -arg; } variable scorefile = strcat (getenv("HOME"), "/News/Score"); file = fopen(scorefile, "a+"); if (file==NULL) { error( sprintf( "Can't open score file for writing (%s)", scorefile )); return; } time = localtime(_time() + expire_days*86400); fprintf (file, "\n%%BOS\n[%s]\nScore:: %d\nExpires: %d/%d/%d\n%s\n%%EOS\n\n", current_newsgroup(), score, time.tm_mon+1, time.tm_mday, 1900+time.tm_year, @by_rule(score) ); fclose(file); reload_scorefile(0); % not apply now } define score_ref_plus() {score_add(score_step, &score_by_ref);} definekey("score_ref_plus", "+", "article"); define score_ref_minus() {score_add(-score_step, &score_by_ref);} definekey("score_ref_minus", "-", "article"); define score_subj_plus() {score_add(score_step, &score_by_subj);} definekey("score_subj_plus", "\e+", "article"); define score_subj_minus() {score_add(-score_step, &score_by_subj);} definekey("score_subj_minus", "\e-", "article"); --- [ZX] * Origin: Это письмо написано в Vim (2:5030/827.2) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.linux/3833234cdad3.html, оценка из 5, голосов 10
|