Could you implement a 'hide attribute' and 'sort attribute' config option?
While sort is probably not so easy to do the hide option would already
be very useful. What I want to do is to use elog to collect bibtex entries
which are then used to generate a bibtex file. So, e.g. if the entry
type 'Article' is selected I would like that all fields that do not make
sense are hidden. Currently I just lock them. The config looks like
this:
Attributes = Login, Bibtex Key, Entry Type, Address,
Annote, Author, Booktitle, Chapter, Crossref, Edition, Editor, Howpublished,
Institution, Journal, Key, Month, Note, Number, Organization, Pages,
Publisher, School, Series, Title, Type, Volume, Year, URL, Short Comment
Options Entry Type = Article{1}, Book{2}, Booklet{3}, InBook{4},
InCollection{5}, InProceedings{6}, Manual{7}, MastersThesis{8}, Misc{9},
PhDThesis{a}, Proceedings{b}, TechReport{c}, Unpublished{d}
Required Attributes = Entry Type
; ARTICLE
{1} Comment Author = [required]
{1} Comment Journal = [required]
{1} Comment Title = [required]
{1} Comment Year = [required]
{1} Locked Attributes = Address, Annote, Booktitle, Chapter, Crossref,
Edition, Editor, Howpublished, Institution, Key, Organization, Publisher,
School, Series, Type
Instead of Locking the attributes, hiding them altogether would make the
entry form look much nicer.
A further improvement would be to sort the attributes, e.g. for author I
would sort the like this, i.e. the more important entries first:
{1} Sort Attributes = Author, Title, Journal, Volume, Pages, Year, Month,
Number, Note
Attributes not mentioned in the sort line could then be displayed
in any order. |
> > 'sort attributes' sorts the logbook entries when they are displayed. Or?
>
> Right
>
> > What I want is to rearrange the entry mask. E.g. if 'Entry type' article is
> > selected then the attributes 'Author', 'Journal', 'Title', and 'Year'
> > should be listed first, as they are required for this bibtex entry type.
> > Is it possible with the current elogd version to also sort (rearrange) the
> > attributes in the entry mask? If yes, how?
>
> Attributes are shown in the order you specify them in the config file, so what about
>
> Attributes = Entry type, Author, Journal, Title, Year ???
Because for 'Entry type'='InProceedings' one needs:
'Author', 'Title', 'Booktitle', 'Year', 'Volume', 'Number'.
So, depending on the entry type that was chosen the entry mask should change,
with the required fields first and the not valid fields should not be shown
at all, which can nicely be done with the 'hidden attributes' config option.
Only the sorting (of the entry mask!) is missing! :) |
Segmentation fault when searching for empty regex
--------------------------------------------------
Searching for a regex like 'm*', which also includes zero 'm's, an empty
expression is found indefinitely in 'highlight_searchtext(...)', which
eventually results in an overflow of 'pt1'. The patch below fixes this
particular problem, but I would guess there are many other regular
expressions that would lead to an overflow of 'pt1', so its size
should definitely be checked before every 'strcpy(pt1,...)' and
the loop be aborted accordingly. (Or 'pt1' should be allocated
and enlarged dynamically.)
*** 14777,14782 ****
--- 14777,14784 ----
if (status != REG_NOMATCH) {
size = pmatch[0].rm_so;
+ if (size == 0) break; /* check for zero size -> infinite loop */
+
/* copy first part original text */
memcpy(pt1, pt, size);
pt1 += size;
***************
*** 14788,14795 ****
--- 14790,14799 ----
/* see also rsputs2(char* ) */
if (hidden)
+ /* need to check size of pt1 !!! */
strcpy(pt1,
"\001B\004style=\003color:black;background-color:#ffff66\003\002");
else
+ /* need to check size of pt1 !!! */
strcpy(pt1, "<B style=\"color:black;background-color:#ffff66\">");
pt1 += strlen(pt1);
***************
*** 14802,14814 ****
--- 14806,14821 ----
/* add coloring 2nd part */
if (hidden)
+ /* need to check size of pt1 !!! */
strcpy(pt1, "\001/B\002");
else
+ /* need to check size of pt1 !!! */
strcpy(pt1, "</B>");
pt1 += strlen(pt1);
}
} while (status != REG_NOMATCH);
+ /* need to check size of pt1 !!! */
strcpy(pt1, pt);
} |