about summary refs log tree commit diff stats
path: root/apps/tests
Commit message (Collapse)AuthorAgeFilesLines
* 7238 - mu.subx: final restrictions on 'addr'Kartik Agaram2020-11-151-0/+0
| | | | I had to tweak one app that wasn't following the rules.
* 7225Kartik Agaram2020-11-111-0/+0
| | | | | | | Both manual tests described in commit 7222 now work. To make them work I had to figure out how to copy a file. It requires a dependency on a new syscall: lseek.
* 7173Kartik Agaram2020-11-031-0/+0
| | | | All tests passing again.
* 7138 - type-check array 'length' instructionKartik Agaram2020-10-291-0/+0
|
* 7101 - tile: remove quotes when evaluating stringsKartik Agaram2020-10-251-0/+0
| | | | This found several bugs due to me not checking for null strings.
* 6946 - print floats somewhat intuitively in hexKartik Agaram2020-10-041-0/+0
|
* 6908 - compiling all floating-point operationsKartik Agaram2020-09-301-0/+0
| | | | | We don't yet support emulating these instructions in `bootstrap`. But generated binaries containing them run natively just fine.
* 6783Kartik Agaram2020-09-161-0/+0
| | | | An extra test that should have been in commit 6781.
* 6781 - new app: RPN (postfix) calculatorKartik Agaram2020-09-151-0/+0
| | | | This was surprisingly hard; bugs discovered all over the place.
* 6733 - read utf-8 'grapheme' from byte streamKartik Agaram2020-08-281-0/+0
| | | | | | No support for combining characters. Graphemes are currently just utf-8 encodings of a single Unicode code-point. No support for code-points that require more than 32 bits in utf-8.
* 6719 - error-checking for 'index' instructionsKartik Agaram2020-08-211-0/+0
| | | | | | | | 1000+ LoC spent; just 300+ excluding tests. Still one known gap; we don't check the entirety of an array's element type if it's a compound. So far we just check if say both sides start with 'addr'. Obviously that's not good enough.
* 6622 - new syscalls: time and ntimeKartik Agaram2020-07-081-0/+0
| | | | | As a side-effect I find that my Linode can print ~100k chars/s. At 50 rows and 200 columns per screen, it's 10 frames/s.
* 6604 - new appKartik Agaram2020-07-011-0/+0
| | | | | | https://archive.org/details/akkartik-2min-2020-07-01 In the process I found a bug, added a new syscall, and 'emulated' it.
* 6597Kartik Agaram2020-06-291-0/+0
|
* 6596Kartik Agaram2020-06-291-0/+0
|
* 6595Kartik Agaram2020-06-291-0/+0
|
* 6594 - start standardizing the meaning of 'print'Kartik Agaram2020-06-291-0/+0
|
* 6528Kartik Agaram2020-06-151-0/+0
|
* 6520 - new app: parse-intKartik Agaram2020-06-141-0/+0
| | | | | | Several bugs fixed in the process, and expectation of further bugs is growing. I'd somehow started assuming I don't need to have separate cases for rm32 as a register vs mem. That's not right. We might need more reg-reg Primitives.
* 6508 - support null exit-descriptorKartik Agaram2020-06-101-0/+0
|
* 6507 - use syscall names everywhereKartik Agaram2020-06-101-0/+0
|
* 6409 - primitives for text-mode UIsKartik Agaram2020-05-271-0/+0
|
* 6406 - primitive 'copy-handle'Kartik Agaram2020-05-251-0/+0
|
* 6382 - re-enable mu.subx in CIKartik Agaram2020-05-221-0/+0
| | | | | | | | | | | I thought I'd done this in the previous commit, but I hadn't. And, what's more, there was a bug that seemed pretty tough for a time. Turns out my self-hosted translator doesn't support '.' comment tokens in data segments. Hopefully I'm past the valley of the shadow of death now. "I HAVE NO TOOLS BECAUSE I’VE DESTROYED MY TOOLS WITH MY TOOLS." -- James Mickens (https://www.usenix.org/system/files/1311_05-08_mickens.pdf)
* update binariesKartik Agaram2020-05-221-0/+0
| | | | CI should start passing again now.
* handle nulls in lookupKartik Agaram2020-05-181-0/+0
| | | | | | | | | Cleaner abstraction, but adds 3 instructions to our overhead for handles, including one potentially-hard-to-predict jump :/ I wish I could have put the alloc id in eax for the comparison as well, to save a few bytes of instruction space. But that messes up the non-null case.
* support 'fake' handles allocated staticallyKartik Agaram2020-05-181-0/+0
| | | | | | | | Mystery solved of why the syntax sugar phases don't work even though they don't use any functions whose signatures changed in the migration to handles. The answer: they use the Registers table, and it needs to use handles rather than raw strings.
* support 'fake' handles allocated staticallyKartik Agaram2020-05-181-0/+0
| | | | | | | | | | | | | | | | | | | | | | Mystery solved of why the syntax sugar phases don't work even though they don't use any functions whose signatures changed in the migration to handles. The answer: they use the Registers table, and it currently doesn't use handles. Rather than create a whole new set of functions that operate on addresses, I'm going to create fake handles that are never intended to be reclaimed. Which raises the question of the best way to do that. I'd like to continue using string syntax, so I'm going to use a prefix in the payload that can also be rendered as a string. But all the printable characters start with 0x20, and we don't currently have escape sequences for null or any other non-printable characters. I _could_ use newlines, but that seems overly clever. So instead I'll once again not worry about some hypothetical problem with running out of alloc-ids, and just carve out half of the id space that can't be used for real alloc ids. Ascii doesn't use the most significant bit of bytes, so it seems like a natural separation.
* Rebuild phases of self-hosted SubX translatorKartik Agaram2020-05-181-0/+0
| | | | For this one commit we need to bootstrap ourselves with subx_translate_debug.
* 6208Kartik Agaram2020-04-221-0/+0
|
* 6182 - start of support for safe handlesKartik Agaram2020-04-031-0/+0
| | | | | | | | | | | | | | So far it's unclear how to do this in a series of small commits. Still nibbling around the edges. In this commit we standardize some terminology: The length of an array or stream is denominated in the high-level elements. The _size_ is denominated in bytes. The thing we encode into the type is always the size, not the length. There's still an open question of what to do about the Mu `length` operator. I'd like to modify it to provide the length. Currently it provides the size. If I can't fix that I'll rename it.
* 6181Kartik Agaram2020-04-031-0/+0
|
* 6153 - switch 'main' to use Mu stringsKartik Agaram2020-03-151-0/+0
| | | | | | | | | | | At the SubX level we have to put up with null-terminated kernel strings for commandline args. But so far we haven't done much with them. Rather than try to support them we'll just convert them transparently to standard length-prefixed strings. In the process I realized that it's not quite right to treat the combination of argc and argv as an array of kernel strings. Argc counts the number of elements, whereas the length of an array is usually denominated in bytes.
* 6094 - new 'compute-offset' instructionKartik Agaram2020-03-071-0/+0
| | | | | | | | | | | | | | | | | | | | | | | If indexing into a type with power-of-2-sized elements we can access them in one instruction: x/reg1: (addr int) <- index A/reg2: (addr array int), idx/reg3: int This translates to a single instruction because x86 instructions support an addressing mode with left-shifts. For non-powers-of-2, however, we need a multiply. To keep things type-safe, it is performed like this: x/reg1: (offset T) <- compute-offset A: (addr array T), idx: int y/reg2: (addr T) <- index A, x An offset is just an int that is guaranteed to be a multiple of size-of(T). Offsets can only be used in index instructions, and the types will eventually be required to line up. In the process, I have to expand Input-size because mu.subx is growing big.
* 6085Kartik Agaram2020-03-061-0/+0
| | | | Support parsing ints from strings rather than slices.
* 6083Kartik Agaram2020-03-061-0/+0
|
* 6070Kartik Agaram2020-02-291-0/+0
|
* 6064Kartik Agaram2020-02-271-0/+0
| | | | Fix CI.
* 6000 - clean up after no-local branchesKartik Agaram2020-02-091-0/+0
|
* 5999Kartik Agaram2020-02-091-0/+0
| | | | | Fix CI. apps/survey was running out of space in the trace segment when translating apps/mu.subx
* 5948 - branching to named blocksKartik Agaram2020-01-291-0/+0
|
* 5933Kartik Agaram2020-01-271-0/+0
| | | | Expand some buffer sizes to continue building mu.subx natively.
* 5898 - strengthen slice-empty? checkKartik Agaram2020-01-191-0/+0
| | | | | | | | | | | Anytime we create a slice, the first check tends to be whether it's empty. If we handle ill-formed slices here where start > end, that provides a measure of safety. In the Mu translator (mu.subx) we often check for a trailing ':' or ',' and decrement slice->end to ignore it. But that could conceivably yield ill-formed slices if the slice started out empty. Now we make sure we never operate on such ill-formed slices.
* 5887 - reorganize libraryKartik Agaram2020-01-141-0/+0
| | | | | | | Layers 0-89 are used in self-hosting SubX. Layers 90-99 are not needed for self-hosting SubX, and therefore could use transitional levels of syntax sugar. Layers 100 and up use all SubX syntax sugar.
* 5847 - literal inputsKartik Agaram2019-12-311-0/+0
|
* 5804Kartik Agaram2019-12-081-0/+0
| | | | | Try to make the comments consistent with the type system we'll eventually have.
* 5803Kartik Agaram2019-12-071-0/+0
|
* 5792Kartik Agaram2019-12-051-0/+0
| | | | | Fix a bug in one test: it checks eax when the component under test returns nothing. It's been just accidentally passing all these months.
* 5782 - fix a widespread bug with Heap-sizeKartik Agaram2019-11-301-0/+0
|
* 5778Kartik Agaram2019-11-291-0/+0
|
alt'>
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
              
              
 



                                                                            



                                                                           
 

                                                                     
 


     
 

                                                                  
                                                       
 
                                            
                                             



                                            


                                                           
 








                                                              

        
 
                                       

                                                       
                              
                                                                       
                                                         
                                

 








                                                 
                                                                     
 



                                                 
                                           
 
 

               
 


                                                                      
 
                                                                  
 




                                                                          
 
                                                                              
                                         
 
 





                                                                 
 
                    


                                                                              
    
                   


                             

                                                                              
                                                            

















                                                                              
 
 

                             
 


                                                                       
 
                                
 

                                                                          
 

                                                     
 
 

               
 
                                                                  
 

                                                                          
 

                                                                         
Ranger v.1.4.3
==============

Ranger is a free console file manager that gives you greater flexibility
and a good overview of your files without having to leave your *nix console.
It visualizes the directory tree in two dimensions: the directory hierarchy
on one, lists of files on the other, with a preview to the right so you know
where you'll be going.

The default keys are similar to those of Vim, Emacs and Midnight Commander,
though Ranger is easily controllable with just the arrow keys or the mouse.

The program is written in Python (2.6 or 3.1) and uses curses for the
text-based user interface.


About
-----

* Authors:         Check the copyright notices in each source file
* Website:         http://ranger.nongnu.org/
* License:         GNU General Public License Version 3

* Download URL of the newest stable version:
http://ranger.nongnu.org/ranger-stable.tar.gz

* Git Clone URL:
git clone http://git.sv.gnu.org/r/ranger.git

* Bug report:
https://savannah.nongnu.org/bugs/?group=ranger&func=additem


Design Goals
------------

* An easily maintainable file manager in a high level language
* A quick way to switch directories and browse the file system
* Keep it small but useful, do one thing and do it well
* Console based, with smooth integration into the unix shell


Features
--------

* Multi-column display (Miller Columns)
* Preview of the selected file/directory
* Common file operations (create/chmod/copy/delete/...)
* VIM-like console and hotkeys
* Automatically determine file types and run them with correct programs
* Change the directory of your shell after exiting ranger
* Tabs, Bookmarks, Mouse support


Dependencies
------------

* A *nix-like operating system
* Python 2.6 or Python 3.1 with the curses module

Optional:
* The "file" program
* A pager ("less" by default)
* The python module "chardet", in case of encoding detection problems

For scope.sh: (enhanced file previews)
* img2txt (from caca-utils) for previewing images
* highlight for syntax highlighting of code
* atool for previews of archives
* lynx or elinks for previews of html pages


Getting Started
---------------

Ranger can be started without installing.  Just run the executable (in
a terminal.)  The switch "--clean" will prevent it from creating or
accessing configuration files.

Follow the instructions in the INSTALL file for installing ranger.

After starting ranger, you should see 4 columns. The third one is the main
column, the directory where you're currently at.  To the left you see the
parent directories and to the right there's a preview of the object you're
pointing at.  Now use the Arrow Keys to navigate, Enter to open a file
or type Q to quit.

To customize ranger, copy the files from ranger/defaults/ to ~/.config/ranger/
and modify them according to your wishes.


Combine Ranger With Other Applications
--------------------------------------

1. bash:

Add this to your ~/.bashrc to use ranger as a directory switcher:

function ranger-cd {
  ranger --choosedir=/tmp/chosen
  if [ -f /tmp/chosen -a "$(cat /tmp/chosen)" != "$(pwd | tr -d "\n")" ]; then
    cd "$(cat /tmp/chosen)"
  fi
  rm -f /tmp/chosen
}
bind '"\C-o":"ranger-cd\C-m"'

Now when you run ranger-cd, browse and quit, the directory of the bash process
you started ranger in will change to the last directroy in ranger.
To change back to the previous directory, you can type: cd -
Also, the line with "bind" will map the key <CTRL-O> to start ranger.

2. vim:

Add this function to your ~/.vimrc:

fun Ranger()
  silent !ranger --choosefile=/tmp/chosen
  if filereadable('/tmp/chosen')
    exec 'edit ' . system('cat /tmp/chosen')
    call system('rm /tmp/chosen')
  endif
  redraw!
endfun
map <leader>r :call Ranger()

This starts ranger when you type <leader>r (usually \r) and if you open a file
in ranger it will be opened in the original vim process.


Troubleshooting, Getting Help
-----------------------------

If you encounter an error, try running ranger with --debug.  This will
sometimes display more detailed information about the error.  Also, try
deactivating optimization:

PYTHONOPTIMIZE="" ranger --debug

Report bugs on savannah:  (please include as much information as possible)
http://savannah.nongnu.org/bugs/?func=additem&group=ranger

Ask questions on the mailing list:
http://lists.nongnu.org/mailman/listinfo/ranger-users


Further Reading
---------------

Check the man page for information on common features and hotkeys.

The most detailed manual is accessible by pressing "?" from inside ranger.
It is also available at ranger/help/, contained in the *.py files.

The file ranger/defaults/keys.py contains all key combinations, so that's
another place you may want to check out.