top: new #define added for focus ('F') toggle tweaking
Just to see if I could, the new #define will force the indentation of a parent task to be reset to zero while maintaining the proper child indentation relationship. Signed-off-by: Jim Warner <james.warner@comcast.net>
This commit is contained in:
parent
02a4220a56
commit
d19ee838a6
20
top/top.c
20
top/top.c
@ -4895,21 +4895,28 @@ static inline const char *forest_display (const WIN_t *q, int idx) {
|
|||||||
#endif
|
#endif
|
||||||
const proc_t *p = q->ppt[idx];
|
const proc_t *p = q->ppt[idx];
|
||||||
const char *which = (CHKw(q, Show_CMDLIN)) ? *p->cmdline : p->cmd;
|
const char *which = (CHKw(q, Show_CMDLIN)) ? *p->cmdline : p->cmd;
|
||||||
|
int level = p->pad_3;
|
||||||
|
|
||||||
if (!CHKw(q, Show_FOREST) || !p->pad_3) return which;
|
#ifdef TREE_FOCUS_X
|
||||||
|
if (q->focus_pid) {
|
||||||
|
if (idx >= q->focus_beg && idx < q->focus_end)
|
||||||
|
level -= q->focus_lvl;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
if (!CHKw(q, Show_FOREST) || !level) return which;
|
||||||
#ifndef TREE_VWINALL
|
#ifndef TREE_VWINALL
|
||||||
if (q == Curwin) // note: the following is NOT indented
|
if (q == Curwin) // note: the following is NOT indented
|
||||||
#endif
|
#endif
|
||||||
if (p->pad_2 == 'x') {
|
if (p->pad_2 == 'x') {
|
||||||
#ifdef TREE_VALTMRK
|
#ifdef TREE_VALTMRK
|
||||||
snprintf(buf, sizeof(buf), "%*s%s", (4 * p->pad_3), "`+ ", which);
|
snprintf(buf, sizeof(buf), "%*s%s", (4 * level), "`+ ", which);
|
||||||
#else
|
#else
|
||||||
snprintf(buf, sizeof(buf), "+%*s%s", ((4 * p->pad_3) - 1), "`- ", which);
|
snprintf(buf, sizeof(buf), "+%*s%s", ((4 * level) - 1), "`- ", which);
|
||||||
#endif
|
#endif
|
||||||
return buf;
|
return buf;
|
||||||
}
|
}
|
||||||
if (p->pad_3 > 100) snprintf(buf, sizeof(buf), "%400s%s", " + ", which);
|
if (level > 100) snprintf(buf, sizeof(buf), "%400s%s", " + ", which);
|
||||||
else snprintf(buf, sizeof(buf), "%*s%s", (4 * p->pad_3), " `- ", which);
|
else snprintf(buf, sizeof(buf), "%*s%s", (4 * level), " `- ", which);
|
||||||
return buf;
|
return buf;
|
||||||
} // end: forest_display
|
} // end: forest_display
|
||||||
|
|
||||||
@ -4931,6 +4938,9 @@ static void forest_excluded (WIN_t *q) {
|
|||||||
if (i == Frame_maxtask)
|
if (i == Frame_maxtask)
|
||||||
q->focus_pid = q->begtask = 0;
|
q->focus_pid = q->begtask = 0;
|
||||||
else {
|
else {
|
||||||
|
#ifdef TREE_FOCUS_X
|
||||||
|
q->focus_lvl = level;
|
||||||
|
#endif
|
||||||
while (i+1 < Frame_maxtask && q->ppt[i+1]->pad_3 > level)
|
while (i+1 < Frame_maxtask && q->ppt[i+1]->pad_3 > level)
|
||||||
++i;
|
++i;
|
||||||
q->focus_end = i + 1; // make 'focus_end' a proper fencpost
|
q->focus_end = i + 1; // make 'focus_end' a proper fencpost
|
||||||
|
@ -56,6 +56,7 @@
|
|||||||
//#define TERMIOS_ONLY /* just limp along with native input only */
|
//#define TERMIOS_ONLY /* just limp along with native input only */
|
||||||
//#define TOG4_NOFORCE /* no force 2 abreast mode with '4' toggle */
|
//#define TOG4_NOFORCE /* no force 2 abreast mode with '4' toggle */
|
||||||
//#define TOG4_NOTRUNC /* ensure no truncation in 2 abreast mode */
|
//#define TOG4_NOTRUNC /* ensure no truncation in 2 abreast mode */
|
||||||
|
//#define TREE_FOCUS_X /* 'F' resets forest view indentation to 0 */
|
||||||
//#define TREE_NORESET /* sort keys do NOT force forest view OFF */
|
//#define TREE_NORESET /* sort keys do NOT force forest view OFF */
|
||||||
//#define TREE_SCANALL /* rescan array w/ forest view, avoid sort */
|
//#define TREE_SCANALL /* rescan array w/ forest view, avoid sort */
|
||||||
//#define TREE_VALTMRK /* use an indented '+' with collapsed pids */
|
//#define TREE_VALTMRK /* use an indented '+' with collapsed pids */
|
||||||
@ -441,6 +442,9 @@ typedef struct WIN_t {
|
|||||||
int focus_pid; // target pid when 'F' toggle is active
|
int focus_pid; // target pid when 'F' toggle is active
|
||||||
int focus_beg; // ppt index where 'F' toggle has begun
|
int focus_beg; // ppt index where 'F' toggle has begun
|
||||||
int focus_end; // ppt index where 'F' toggle has ended
|
int focus_end; // ppt index where 'F' toggle has ended
|
||||||
|
#ifdef TREE_FOCUS_X
|
||||||
|
int focus_lvl; // the indentation level of parent task
|
||||||
|
#endif
|
||||||
proc_t **ppt; // this window's proc_t ptr array
|
proc_t **ppt; // this window's proc_t ptr array
|
||||||
struct WIN_t *next, // next window in window stack
|
struct WIN_t *next, // next window in window stack
|
||||||
*prev; // prior window in window stack
|
*prev; // prior window in window stack
|
||||||
|
Loading…
Reference in New Issue
Block a user