[libre-riscv-dev] development workflow

Luke Kenneth Casson Leighton lkcl at lkcl.net
Mon Feb 18 09:16:15 GMT 2019


---
crowd-funded eco-conscious hardware: https://www.crowdsupply.com/eoma68

On Mon, Feb 18, 2019 at 8:29 AM Aleksandar Kostovic
<alexandar.kostovic at gmail.com> wrote:
>
> Wow, that a lot of stuff going on. I like the look.

 it's... efficient.  fvwm2 is set up to *not* require a "click" to
change window-focus.  i can just move the mouse about 2-3 inches, no
need to do anything more, and the xterm next door is activated.

 moving between virtual desktops (of which there are *24*) is likewise
a matter of just moving the mouse off the edge of the screen.  it can
be very confusing if the mouse is kicked accidentally :)

 the extra desktops means i can have firefox and chrome plus a stack
of xterms in one window, then audio management in another (i run jackd
with pulseaudio integration - it gets complicated very quickly),
hexchat plus a stack of development xterms in another...

 all of these i can flip around *without* having to shut *anything*
down.  most people are forced to have to shut down an entire setup
arrangement just to start some alternative work.

> Also which OS are you
> using? Looks to me like some kind of *ubuntu 18.04 cuz GCC 7.3.0 is default
> on 18.04 and apt package manager. Maybe a custom DE? I dig it.

 debian/testing, with angband.pl's "nosystemd" packages, using fvwm2.
been using fvwm2 for 20 years.  http://lkcl.net/fvwm2rc is the config.

 i don't even use a graphical window login manager: i run fvwm2 with
startx & from a *console* login (!)  and have set up a ~/.xinitrc to
start the time, systray, laptop battery management program and so on.


> Mine setup is 1080p laptop screen and I usually have only one app taking up
> the screen. Look at attached screenshot. Its Sublime 3. I just love it.

 *sigh* i see you're using a GUI-based editor, with tabs.  you notice
how a whopping 70% of the editor window is *entirely empty*?  that's
what i mean.

 tab-based GUIs are great if you want to *compare* two files,
visually, to find the differences.  you can flip easily between Tab-1,
Tab-2, Tab-1, Tab-2.

 i used this trick to identify even down to bit-level in network
reverse-engineering of NT Domains, back in 1996.

 but for anything else?  god, no.

 does the GUI / IDE you're using have a "split window" feature?  or,
can you open multiple of them at once?  that would be infinitely
better, as you could see the file you're editing *and* the unit test
file *and* the base class and more, all at the same time.

> VIM
> is not what i am most efficient with right now, but i force myself to use
> it whenever i write Verilog or C++.

 :)

to help with python development, consider to add these to ~/.vimrc:

map , ^[:w^M:!python %:t^M^M
syntax on
set ts=4
set sw=4
set expandtab

if you are testing a file, rather than exit it, you can just press ","
and that macro will:

* save the file
* execute "python {insert current filename}"

what *that* in turn means is, you absolutely do not have to move your
hand over to the mouse, you do not have to background vim, you can run
the unit tests or test the program *directly* without moving you
fingers any further than necessary to hit the "comma" key.

if you prefer it could be modified to "python {insert current filename} | more"

the other commands set tabstop=4, shiftwidth=4 (so when you use the
">>" vim command it indents by 4 spaces), and expandtab makes damn
sure that tabs are *not* inserted, they're expanded to 4 spaces.


then, there is exuberant-ctags, which integrates with vim (and emacs),
which you can use to navigate immediately to a function anywhere
recursively within subdirectories.  "ctags -R" creates the "tags"
file, and ctrl-] will read the current function name (or variable
name) that the cursor is on, and will jump to its definition,
immediately.  including if it's in a totally different file.


i didn't pick this approach because it's "fun", i picked it because
it's elegant and ultra-efficient.

l.



More information about the libre-riscv-dev mailing list