📄 readme.top
字号:
the Linus Torvalds CodingStyle guidelines ... -*- -*- -*- on indentation + etc. -*- -*- -*- well almost all, except for those stinkin'... I suppose even Linus Torvalds is entitled to err now and again. How so you say? Tabs, me' bucko, stinkin' tabs! That, plus the simplistic position regarding indentation espoused in that other- wise excellent document. -*- Rant On, and on -*- Let's compare two approaches to the tab/indentation issue with a small code sample using tabs then spaces. This snippet happens to be the key to top's use of dynamic colors on many static screens, while also ensuring screen width isn't exceeded so as to avoid line wraps. We'll view just the first 40 columns, assuming one wishes to occasionally provide comments to the right of actual code (you do, don't you?). Then YOU decide which approach makes the most SENSE! Stinkin' Tabs versus Spaces: the Linus way Hey, where'd my +----+----1----+----2----+----3----+----4+ many code lines | while (*sub_beg) { : up-and-gone-to? | switch (*sub_end: | case 0: : Gosh, wonder if | \ Tabs Induced / : Linus expects a | case 1: : fellow to stick | + WASTE-Lands! + case 5: : his comments on | : the left side?! | + Not a Living + : | : Ever see source | + line-of-code + : with not enough | : whitespace; and | / To Be Found! \ : this is better? | default:: | : Oh lookie here, \ } : there's just a hint of REAL code! ----> if (0 >= room) b: / } /* end: while 'subtrin: +----------------------------------------+ Spaces versus Stinkin' Tabs: the other way +----+----1----+----2----+----3----+----4+ Wow, now this is | while (*sub_beg) { : Visible hackin'! | switch (*sub_end) { : | case 0: : Hmmm, wonder how | *(sub_end + 1) = '\0'; : many programmers | case 1: case 2: case 3: case: read those lines | case 5: case 6: case 7: case: from the LEFT to | cap = Curwin->captab[(int: the RIGHT? This | *sub_end = '\0'; : "innovation" may | PUTP("%s%.*s%s", cap, roo: possibly benefit | room -= (sub_end - sub_be: those particular | sub_beg = ++sub_end; : kinds of people, | break; : you agree? Duh! | default: : | ++sub_end; : AND, there might | } : even be room for | if (0 >= room) break; : unseen comments! | } /* end: while 'subtrings' */ : +----------------------------------------+ Gosh, I just don't KNOW -- it's such a TOUGH choice... Oh you Stinkin' Tabs: correspondence, Who-Cares; documentation, Oh-Alright; even scripts, Well-If-You-Must. But you have NO place within the code-space of MY C-source listing! So be gone already!! In Summation... - If you want to use tabs to the right of the code, go-for-it. But PLEASE, not ever in the C-source code-space, thank-you- kindly. Just use three little ol' spaces (exactly 3, no-more, no-less) where you WOULD have stuck a stinkin' tab. We'll get far more READABLE files, much less WAISTED precious horizontal space, more consistent CURSORS and on, and ON, AND ON! Plus, without those awful *the-devil's-own-handiwork*, the aforementioned document need NEVER speak of their EVILS again. - Lastly, since SPACES (not stinkin' tabs) are SO beneficial, maybe we should use just a few more of 'em. Some of those C- thingies are VERY sensitive -- they don't like being TOUCHED by any other syntax element! Which ones? Why these guys: braces, reserved words and binary operators ( it's the TRUTH, they told me themselves ) It's so EASY to keep 'em HAPPY! And lo-and-behold, the combi- nation of <sp>thingy<sp> turns out to be a darn effective bug repellent, too. So much so, one can actually code while TOTALLY NUDE yet still avoid them ol' bug-bytes (sic-sic)! step down_from me_punctilious soap-box_once_again [1 +5 +5 +5 = huh?]## 4c. EXAMPLES of Windows ---------------------------------------------## -*- The 'A' Mode Command Toggle -*- Here's what you'll see when you first invoke the alternate-display mode interactive command. This particular display was produce on a VT100 xterm, with only 24 rows. All four task displays are visible, but they could not be sized the same. Available lines are parceled out in the fairest way possi- ble so the last two task displays have an extra line each. Notice the 'current' window name in the summary area -- it's been emphasized because the associated task display is visible. Since 1:Def has a task area, the full range of interactive commands would be at your disposal. But remember, many of those commands will apply only to window 1:Def. +--------------------------------------+ 1:Def name is bold, |1:Def - 15:46:37 up 16:25, 9 users, : thus all commands |Tasks: 76 total, 1 running, 75 sle: will be available. |Cpu(s): 0.7% user, 1.3% system, : |Mem: 126588k total, 123688k used,: |Swap: 265032k total, 8232k used,: |______________________________________: Tough luck windows |1__PID_USER______PR__NI_%CPU____TIME+_: #1 & 2 - you lost | 7343 jtwm 16 0 0.9 0:00.59: one line each -- | 7339 jtwm 9 0 0.0 0:00.02: guess you'll just |__7337_root_______9___0__0.0___0:01.30: have to learn how |2__PID__PPID_Command____________TIME+_: to live with it. | 997 952 kdeinit 17:59.59: | 1115 952 kdeinit 2:16.47: |__1803__1116_led_______________1:55.30: |3__PID_%MEM__VIRT_SWAP__RES_CODE_DATA_: The #3 & #4 windows | 4634 12.3 15620 0 15m 860 14m : better not gloat | 7337 11.3 14396 92 13m 36 13m : over 1 extra line. | 923 10.6 30524 16m 13m 1120 12m : That user could yet |___991__7.2__9492__316_9176___12_9164_: sock 'em with the |4_UID_USER_____GROUP____TTY________PID: 'n' command and | 43 xfs xfs ? 806: take those lines, | 0 ykde users pts/7 5561: plus others, away! | 0 wgnome users pts/7 5560: | 0 root root pts/7 5325: +--------------------------------------+ So, what say we start applying some of those "full range of interac- tive commands"? Onward + Downward... -*- STACKIN' & WHACKIN' Windows -*- Whoa, hold on mate. Someone has already whacked these windows. See, there are no task areas for windows 1:Def and 4:Usr. Well, we can at least retrace their steps... Here's what was done, after issuing the 'A' command and entering alternate-display mode. 1) When #1 was the 'current' window, '-' was pressed, toggling Off the associated task display ( if 'l t m' had been applied to its summary, too ) ( then there'll be only a msg line when 'current' ) 2) Then the 'w' key was struck to cycle backward, making 4:Usr the 'current' window (could have used 'a a a', if one likes to type) 3) Then step #1 was repeated, and bye-bye window #4 4) Finally, window #2 was made the 'current' window ( Q. how many keystrokes were used? ) ( A. minimum of 2: 'a a' or 'w w'. ) +--------------------------------------+ No 'l','t','m','1' |2:Top - 15:48:35 up 16:27, 9 users, : commands have been |Tasks: 75 total, 1 running, 74 sle: issued here, |Cpu(s): 2.0% user, 0.7% system, : but... |Mem: 126588k total, 123712k used,: |Swap: 265032k total, 8232k used,: |______________________________________: #2's been changed; |2__PID__PPID_Command____________TIME+_: user applied a 'c' | 997 952 kdeinit: konsol 18:00.70: command (when it | 1115 952 kdeinit: konsol 2:16.47: was current) - now | 1803 1116 led tiptop.HELP 1:55.30: shows cmd lines vs. | 923 922 X :0 1:09.60: program names; | 973 1 klaptopdaemon 0:59.63: still seems to be | 981 952 /usr/bin/artsd 0:48.63: sorted on TIME+ | 987 1 kdeinit: kdeskt 0:24.34: though |___991_____1_kdeinit:_kicker___0:04.59: |3__PID_%MEM__VIRT_SWAP__RES_CODE_DATA_: This #3 guy appears | 4634 12.3 15620 0 15m 860 14m : to still be running | 7337 11.3 14396 92 13m 36 13m : with the supplied | 923 10.6 30544 16m 13m 1120 12m : defaults, but no | 991 7.2 9492 316 9176 12 9164 : telling what damage | 7329 7.0 9036 140 8896 36 8860 : might have been | 1115 6.9 8956 160 8796 36 8760 : done to it's | 987 6.4 8668 524 8144 20 8124 : summary info stuff | 1131 6.4 8268 144 8124 36 8088 : +--------------------------------------+ And that's what brought us to this current state. No, wait. Oh lordy, will you look at that -- someone has changed the name of win- dow #2 from 'Job' to 'Top'! How'd they do that? Well, they just issued the 'g' interactive com- mand, of course. That command is available whenever alternate-display mode is active and always impacts just the 'current' window. Gosh, you can even issue the 'g' command when 'l' has toggled Off the very summary area line containing the window name! Almost Done... -*- ALL TOGETHER Now, Window(s) -*- Here, the window 1:Def task display has been toggled Off but it remains the 'current' window. Since there is no task area, many com- mands will be restricted. However, the commands ('l', 't', 'm', '1') affecting the summary area, as well as some other global commands ('k', 'Z', etc.), would still be active. Notice that the Mem and Swap lines are not shown. This means that the loser (oops, user) has, in fact, issued the 'm' command! Now, if you were to cycle the 'current' window with the 'a' or 'w' commands, the task display would remain the same (except possibly growing/shrinking slightly) but the summary area would change periodically. The comments to the left of the image provide additional insights into how things came to be. Note especially the comments for window 4:Usr -- the one with some empty rows... 1:Def no highlight, +--------------------------------------+ thus disabled cmds: |1:Def - 15:50:32 up 16:29, 9 users, : b,i,n,u,x,y, etc. |Tasks: 75 total, 2 running, 73 sle: & m = lost Mem/Swap |Cpu(s): 10.6% user, 0.0% system, : |______________________________________: 2:Job was very busy: |2__PID__PPID_Command____________TIME+_: 'n' cmd, w/ 7 tasks | 80 1 ( khubd ) 0:00.00: 'c' cmd, cmd line | 6 0 ( kreclaimd ) 0:00.00: 'O' cmd, sort cmd | 9 1 ( mdrecoveryd ) 0:00.00: 'R' cmd, sort bkwd | 11358 1 /bin/bash/ /usr 0:00.00: 'x' cmd, hi column | 1297 1 /sbin/mingetty 0:00.00: (when 2 WAS current) | 683 1 xinetd -stayali 0:00.00: |___836_____1_login_--_root_____0:00.00: 3:Mem has altered |3__PID_%MEM__VIRT_SWAP__RES_CODE_DATA_: some std defaults: | 4634 12.3 15620 0 15m 860 14m : 'y' turned Off | 7337 11.3 14396 92 13m 36 13m : 'x' turned On | 923 10.6 30544 16m 13m 1120 12m : (when 3 WAS current) | 991 7.2 9492 316 9176 12 9164 : |__7329__7.0__9036__140_8896___36_8860_: Huh? 4:Usr has some |4_UID_USER_____GROUP____TTY________PID: blank rows! ? ? ? ? | 0 jtwm root pts/2 5561: Aha, the 'i' command | 0 root root ? 5560: applied (when 4 WAS | : current); could be | : reversed with '=', | : when 4 IS current! +--------------------------------------+ Ok now, how about that 'current' window 1:Def and its unseen tasks? At any time, you can quickly retrieve lost tasks in a number of ways: 1) Press '-', toggling just the 'current' window 2) Press '_', toggling all visible/invisible windows ( 1:Def is the only window currently not shown ) ( afterward, it'll be the only window showing! ) * 3) Press '+', forcing all task displays to become visible 4) Press 'A' to return to full-screen mode, with only 1:Def tasks shown and without a window name Now that should be enough ways of getting a task area visible again to satisfy almost any user, don't ya think? Note: Use #3 above when you've messed up your screen beyond redemption. The four task displays will reappear, nice and even. They will also have retained any customizations you had previously applied, except for the 'i' (idle tasks) and 'n' (max tasks) com- mands. That's It ! Piece of Cake !! Enjoy them there windows !!!
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -