1
0
mirror of https://github.com/rfivet/uemacs.git synced 2024-12-24 10:06:30 -05:00
Commit Graph

263 Commits

Author SHA1 Message Date
Linus Torvalds
4bccfab632 Make 'show_line()' do proper TAB handling
The TAB handling got broken by commit cee00b0efb ("Show UTF-8 input as
UTF-8 output") when it stopped doing things one byte at a time.

I'm sure the other special character cases are broken too.

Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2012-07-11 01:22:32 -07:00
Linus Torvalds
42d9cb33a5 Expand keycode to 'int' from 'short'
This uses the four high bits for the meta and control key sequences.
This means that we will be limiting our Unicode space to 28 bits, but
that's more than we really need.

It *would* be nicer if we just used the sign bit to mark "we have meta
character information") but that would require bigger changes.  And we
really don't need to worry about 30-bit unicode.  Small steps, remember.

Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2012-07-10 18:14:02 -07:00
Linus Torvalds
6e4a45c005 character input: make sure we have enough bytes for a full utf8 character
.. but we do have that 0.1s delay, so if somebody feeds us non-utf8
sequences, we won't delay forever.

Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2012-07-10 18:11:30 -07:00
Linus Torvalds
3abd3dba42 utf8: make sure to honor the array length properly
Right now the input side can give partial utf8 input, and that showed
that we didn't properly handle that case.

Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2012-07-10 17:56:53 -07:00
Linus Torvalds
3c7bd9a7d2 Make kbd macro save area use 'int' instead of short
I'm starting to expand the input value from 'short' (with flags in the
upper eight bytes) to 'int' (with negative values having flags).

Small baby steps.

Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2012-07-10 17:42:19 -07:00
Linus Torvalds
ec6f4f36ec Use utf8 helper functions for keyboard input
ttgetc() used some homebrew utf8 to unicode translation, limited to just
the normal latin1 characters.  Use the utf8 helper functions to get it
right for the more complex cases.

NOTE! We don't actually handle characters > 0xff right anyway.  And we
still end up doing Latin1 in the buffers on input.  One small step at a
time.

Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2012-07-10 17:36:30 -07:00
Linus Torvalds
6b793211c2 Make cursor movement (largely) understand UTF-8 character boundaries
Ok, so it may do odd things if it's not truly utf-8, and when moving up
and down lines that have utf-8 the cursor moves oddly (because the byte
offset within the line stays constant, rather than the character
offset), but with this you can actually open the UTF8 example file and
move around it, and at least some of the movement makes sense.

Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2012-07-10 16:40:36 -07:00
Linus Torvalds
e62cdf04cf Split up the utf8 helper functions into a file of their own
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2012-07-10 16:21:35 -07:00
Linus Torvalds
12e4647deb Remove the old utf8_mode thing.
Let's just plan on being fully utf8 some day.  We're not there yet, and
maybe we'll never be, but having the halfway mode is not useful either.

Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2012-07-10 15:09:31 -07:00
Linus Torvalds
cee00b0efb Show UTF-8 input as UTF-8 output
.. by doing the stupid "convert to unicode value and back" model.

This actually populates the 'struct video' array with the unicode
values, so UTF8 input actually shows correctly.  In particular, the nice
test-file (UTF-8-demo.txt) shows up not as garbage, but as the UTF-8 it
is.

HOWEVER!

Since the *editing* doesn't know about UTF-8, and considers it just a
stream of bytes, the end result is not actually a usable utf-8 editor.
So don't get too excited yet: this is just a partial step to "actually
edit utf8 data"

NOTE NOTE NOTE! If the character buffer contains Latin1, we will
transform that Latin1 to unicode, and then output it as UTF8.  And we
will edit it correctly as the character-by-character data.  Also, we
still do the "UTF8 to Latin1" translation on *input*, so with this
commit we can actually continue to *edit* Latin1 text.

Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2012-07-10 15:08:17 -07:00
Linus Torvalds
e8f984a1b0 Make the 'struct video' contain an array of unicode characters rather than bytes
This is disgusting.  And quite frankly, it's debatable whether this will
ever work.  The "line" structure is still just an array of characters,
so that has to work with utf-8.

But the 'struct video' thing is what represents the actual screen
rectangle, and is fixed-size by the size of the screen.  So making it
contain actual 32-bit unicode characters *may* make sense.

Right now we translate things the same way we always used to, though, so
utf-8 in 'struct line' will not be translated to the proper unicode
array, but to the bytes of the utf-8 representation.  So this really
doesn't improve anything per se yet, just expands the memory use of the
video array.

Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2012-07-10 14:24:23 -07:00
Linus Torvalds
2dddd4f970 Show lines with a single helper function, not one byte at a time
Let's see how hard it is to show UTF-8 characters properly.

Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2012-07-10 13:38:41 -07:00
Naohiro Aota
1d0cfd0276 Make uemacs build on FreeBSD.
See <https://bugs.gentoo.org/show_bug.cgi?id=387135>.

Signed-off-by: Ulrich Müller <ulm@gentoo.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2012-05-26 11:50:23 -07:00
Linus Torvalds
12ba84c8dd spawn.c: do the "keyboard open/close" around shell invocations
I'm not 100% sure we really should even be doing this whole "keyboard"
open/close for termcap, but even if the right thing to do ends up being
to just do everything in the TTopen/TTclose (and make TTkopen/TTkclose
no-ops), it does seem to be the right thing to do.

Reported-by: Bijan Soleymani <bijan@psq.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2011-08-25 16:01:28 -07:00
Linus Torvalds
33676d6d23 file.c: remove crazy keyboard open/close calls
It seems to have something to do with some old DOS mode, and not having
keyboard translation on ("Insert floppy A:" questions while opening
files? Whatever).  But this is while doing normal file opens, and it is
just insane to open/close a tty across a file open.

The possible tty init/exit sequence would mess up some of the file
read/write messages.

Reported-by: Bijan Soleymani <bijan@psq.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2011-08-25 15:52:41 -07:00
Linus Torvalds
c0970c4220 Force a screen re-draw after tcap 'ti' on terminal open
The 'tcapkopen()' function re-initializes the terminal with the 'ti'
sequence, which for most sane termcap entries is just empty.  But for
'xterm', that seems to actually be a real control sequence (clear and
reset?), and we'd better tell display.c that the screen is now garbage
and needs to be re-drawn.

Also, make tcapkclose() match the 'ti' (terminal init) with a 'te'
(terminal exit).

Maybe we should just stop playing games with ti/te, but this at least
improves the situation a bit.

Reported-by: Bijan Soleymani <bijan@psq.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2011-08-25 13:45:08 -07:00
Thiago Farina
2d0b568559 uemacs: Add -g options to the output usage.
While I'm here, improve the word of the above two options.

Signed-off-by: Thiago Farina <tfransosi@gmail.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2011-08-22 09:37:08 -07:00
Ulrich Müller
a511e03e60 Respect LDFLAGS when linking.
Signed-off-by: Ulrich Müller <ulm@gentoo.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2011-08-22 09:26:46 -07:00
Linus Torvalds
c718cb2a4a Show xA0 (nbsp) as a non-printable character
I want to see the difference between space and nbsp, and I consider nbsp
to be a control character, so show it as such.  Even if it is
technically "printable".

Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2011-08-22 09:25:04 -07:00
Thiago Farina
823786d263 uemacs: display.c: Use the newly introduced xmalloc function.
Signed-off-by: Thiago Farina <tfransosi@gmail.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2010-12-16 15:46:43 -08:00
Thiago Farina
6e4aec520e uemacs: Add xmalloc as a wrapper function for malloc.
xmalloc checks the returned pointer and dies if it failed to allocate
the memory.

Use this new function in window.c.
More places will be converted to use xmalloc latter.

Signed-off-by: Thiago Farina <tfransosi@gmail.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2010-12-16 08:33:10 -08:00
Thiago Farina
bf3c3ac2bd uemacs: Make some magic variables private to search.c module.
Signed-off-by: Thiago Farina <tfransosi@gmail.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2010-12-14 11:28:55 -08:00
Thiago Farina
d6e76cca7b uemacs: input.c: Fix mkstemp warning.
Fix the following warning:

input.c: In function ‘getstring’:
input.c:590: warning: ignoring return value of ‘mkstemp’, declared with attribute warn_unused_result

This add usage.c module for die function.
This also add wrapper.c module for the xmkstemp that is wrapper function
around the original mkstemp function.

Both module codes was largelly based on git, linux and sparse codes.

Signed-off-by: Thiago Farina <tfransosi@gmail.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2010-12-14 11:27:57 -08:00
Thiago Farina
f28629471c uemacs: convert typedef struct RMC to struct magic_replacement.
Signed-off-by: Thiago Farina <tfransosi@gmail.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2010-11-30 14:39:37 -08:00
Thiago Farina
9744421f3c uemacs: Move MAXNLINE constant from estruct.h to file.c
This constant is used only there, so there is no reason for it to be
in estruct.h

Signed-off-by: Thiago Farina <tfransosi@gmail.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2010-11-28 17:20:07 -08:00
Thiago Farina
a1891f8efc uemacs: Move some constants from estruct.h to posix.c
These two constants are only needed/used by the posix.c file,
so just define them there.

Signed-off-by: Thiago Farina <tfransosi@gmail.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2010-11-28 14:16:57 -08:00
Thiago Farina
dff382de1d uemacs: buffer.c: Fix uninitialized struct warning.
This fix the following warning:

  buffer.c: In function ‘nextbuffer’:
  buffer.c:45: warning: ‘bp’ may be used uninitialized in this function

Signed-off-by: Thiago Farina <tfransosi@gmail.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2010-11-28 13:14:31 -08:00
Thiago Farina
ebd4f2f1eb uemacs: convert typedef struct MC to struct magic.
Signed-off-by: Thiago Farina <tfransosi@gmail.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2010-11-28 12:29:52 -08:00
Thiago Farina
e1b2f459e2 uemacs: Move uv variable into the eval.c source file.
It's used only there.

Signed-off-by: Thiago Farina <tfransosi@gmail.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2010-11-24 08:26:55 +09:00
Li Jie
1cf0fc1609 uemacs: add line.h in names.c to fix compiling error
I got following errors while compiling uemacs:

names.c:132: error: ‘insspace’ undeclared here (not in a function)
names.c:217: error: ‘yank’ undeclared here (not in a function)
make: *** [names.o] Error 1

It looks like names.c needs line.h for function declarations.

Signed-off-by: Li Jie <eltshanli@gmail.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2010-11-18 08:28:17 -08:00
Thiago Farina
10ae171147 uemacs: Move NBLOCK constant into line.c
This constant is only used in line.c. So just keep it there.

Signed-off-by: Thiago Farina <tfransosi@gmail.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2010-11-15 14:07:43 -08:00
Thiago Farina
af19da1a99 uemacs: Move structure line and its functions to its own header file.
Signed-off-by: Thiago Farina <tfransosi@gmail.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2010-11-15 08:46:20 -08:00
Pekka Enberg
72a1af4d91 uemacs: Kill dead code
This patch kills #ifdef'd code from display.c and file.c.

Signed-off-by: Pekka Enberg <penberg@kernel.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2010-11-14 15:21:47 -08:00
Thiago Farina
6ceea8ba9b uemacs: convert typedef struct VDESC to struct variable_description.
Signed-off-by: Thiago Farina <tfransosi@gmail.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2010-11-06 09:21:41 -07:00
Thiago Farina
fa57a63d57 uemacs: remove forward declaration of 'struct video' from edef.h
Signed-off-by: Thiago Farina <tfransosi@gmail.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2010-11-03 15:09:55 -04:00
Linus Torvalds
85b4f0af1a Merge branch 'master' of git://git.kernel.org/pub/scm/editors/uemacs/uemacs 2010-11-02 09:05:21 -04:00
Thiago Farina
4966cb355e uemacs: get rid of BITMAP typedef.
Signed-off-by: Thiago Farina <tfransosi@gmail.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2010-11-02 09:04:48 -04:00
Thiago Farina
6491f4c4f0 uemacs: convert typedef struct WHBLOCK to struct while_block.
Signed-off-by: Thiago Farina <tfransosi@gmail.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2010-10-30 18:09:40 -07:00
Thiago Farina
18342f6246 uemacs: Move function declarations from edef.h to efunc.h.
Signed-off-by: Thiago Farina <tfransosi@gmail.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2010-10-25 10:07:13 -07:00
Christian Faulhammer
da3d470b8d Fix a tiny typo
Signed-off-by: Christian Faulhammer <christian@faulhammer.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2010-09-13 07:34:23 -07:00
Thiago Farina
5664b10291 uemacs/version.c: Add version function to output the version string information.
Signed-off-by: Thiago Farina <tfransosi@gmail.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2010-09-07 13:55:02 -07:00
Thiago Farina
74336ca924 uemacs: Get rid of the CALLED macro.
uemacs is not a subprogram and doesn't seem it will be, so there is no reason
to leave this macro. And this macro is defined to 0, so we never reach the path
where we test for this macro.

Signed-off-by: Thiago Farina <tfransosi@gmail.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2010-09-07 13:47:00 -07:00
Thiago Farina
1dcc35b309 uemacs: Remove more garbage emacs.* files from the tree.
Signed-off-by: Thiago Farina <tfransosi@gmail.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2010-09-07 13:47:00 -07:00
Thiago Farina
b71ee14235 uemacs: Remove two completly unused functions (fnclabel and spal).
The implementation of these functions are doing anything at all at this moment.
So cleanup a bit the code by removing fnclabel and spal functions completly.

Signed-off-by: Thiago Farina <tfransosi@gmail.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2010-09-07 13:47:00 -07:00
Pekka Enberg
9f801a8822 uemacs: Remove garbage from the tree
This patch removes bunch of ancient Makefiles and VMS scripts from
uemacs source tree.  If somebody really needs them, they can always look
them up from git repository history.

Signed-off-by: Pekka Enberg <penberg@kernel.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2010-08-29 08:15:23 -07:00
Pekka Enberg
f4ccd49650 uemacs: Clean up program executable
This patch fixes Makefile 'clean' target to clean up program executable 'em'.

Signed-off-by: Pekka Enberg <penberg@kernel.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2010-08-29 08:15:23 -07:00
Pekka Enberg
0f05e53f99 uemacs: Fix return statements
Return statement is not a function so remove superfluous use of parenthesis.

Cc: Thiago Farina <tfransosi@gmail.com>
Signed-off-by: Pekka Enberg <penberg@kernel.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2010-08-29 08:15:23 -07:00
Pekka Enberg
3246438f73 uemacs: Kill unused lckhello function
This patch kills an unused 'lckhello' function and gets rid of the following
GCC warning:

    CC       lock.o
  lock.c:160: warning: ‘lckhello’ defined but not used

Signed-off-by: Pekka Enberg <penberg@kernel.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2010-08-29 08:15:23 -07:00
Thiago Farina
bd635515a6 uemacs/efunc.h: Get rid of a duplicated exported type called "names".
This type is already exported in edef.h

Signed-off-by: Thiago Farina <tfransosi@gmail.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2010-08-29 08:15:23 -07:00
Thiago Farina
78f045749f uemacs: Add more two options to the usage output.
Added + and +<n> to the usage output.

Also fixed the following warning:

  main.c: In function ‘main’:
  main.c:121: warning: ‘gline’ may be used uninitialized in this function

Signed-off-by: Thiago Farina <tfransosi@gmail.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2010-08-29 08:15:23 -07:00