Commit Graph

2141 Commits

Author SHA1 Message Date
Stefan Hoffmann
fa2b327e9a cleaned up the readonly check in readfile() 2014-04-03 10:30:03 -03:00
Stefan Hoffmann
5a2c9e123e remove mch_access macro as it is only used in fs.c 2014-04-03 10:30:03 -03:00
Stefan Hoffmann
f762a9e195 move filewritable() into /src/os/fs.c and rename it 2014-04-03 10:30:03 -03:00
Stefan Hoffmann
071d28076f move check_file_readonly() into /src/os/fs.c and rename it 2014-04-03 10:30:03 -03:00
Stefan Hoffmann
4a138137f7 check readonly by trying to open the file for writing...
instead of mch_access, to avoid a possible race condition
2014-04-03 10:30:03 -03:00
John Szakmeister
a3ec68ce1e Use check_symbol_exists() instead of check_function_exists().
This is mostly a revert of 477031c03b.
Now that we are not setting `CMAKE_C_FLAGS`, the check can work
correctly and it helps `pcc` (portable c compiler) make it further
along--though it still doesn't produce usable results (see #427 for the
details).
2014-04-03 04:32:27 -04:00
Justin M. Keyes
0895bf8828 vim-patch:7.4.166
Problem:   Auto-loading a function for code that won't be executed.
Solution:  Do not auto-load when evaluation is off. (Yasuhiro Matsumoto)

https://code.google.com/p/vim/source/detail?r=5d03c374712128077ac4c342aad02120ed98df70
2014-04-02 18:54:36 -03:00
oni-link
c298edd5dc Replace use of mch_rename with rename.
The macro mch_rename is no longer necessary, because C99 function rename
is always available.
2014-04-02 18:52:16 -03:00
oni-link
59f5c2251a remove HAVE_WCTYPE_H 2014-04-02 18:52:16 -03:00
oni-link
9d2975efad remove HAVE_WCHAR_H 2014-04-02 18:52:16 -03:00
oni-link
87a317e076 remove HAVE_STRTOL
strtol is a C99 standard function.
2014-04-02 18:52:16 -03:00
oni-link
38ff389496 remove HAVE_STRPBRK
strpbrk is a C99 standard function.
2014-04-02 18:52:16 -03:00
oni-link
ec51b04a89 remove HAVE_STRING_H 2014-04-02 18:52:16 -03:00
oni-link
6c902e2104 remove HAVE_STRFTIME
strftime is a C99 standard function.
2014-04-02 18:52:16 -03:00
oni-link
5aa1128e97 remove HAVE_STRERROR
strerror is a C99 standard function.
2014-04-02 18:52:16 -03:00
oni-link
e38266a3dd remove HAVE_STDLIB_H 2014-04-02 18:52:16 -03:00
oni-link
a96f2949cc remove HAVE_RENAME
rename is a C99 standard function.
2014-04-02 18:52:16 -03:00
oni-link
8bae684045 remove HAVE_DATE_TIME
__DATE__ and __TIME__ are C99 standard predefined macros.
2014-04-02 18:52:16 -03:00
Thiago de Arruda
774f668c43 Move signal handling to libuv event loop
This removes all signal handling code from os_unix.c to os/signal.c. Now signal
handling is done like this:

- Watchers for signals are registered with libuv default event loop
- `event_poll` continuously calls `poll_uv_loop` to produce events until it
  receives user input, SIGINT or a timeout
- Any signals received in `poll_uv_loop` will push events to a queue that is
  drained and processed by `event_poll`

Signals aren't handled directly in the libuv callback to avoid recursion in the
event loop(which isn't supported by libuv).

The same principle will apply to other events in the future: Push to a queue
from a libuv callback and drain it from `event_poll`
2014-04-01 09:46:29 -03:00
John Schmidt
40879af7bd Move shorten_filenames back to fileio.c 2014-04-01 08:08:08 -03:00
John Schmidt
7ec4d478eb Move match_suffix from misc1.c 2014-04-01 08:08:08 -03:00
John Schmidt
35e737e63c Move expand_wildcards{,_eval} from misc1.c 2014-04-01 08:08:07 -03:00
John Schmidt
d31e598895 Move shorten_fname{,1,s} and shorten_filenames from fileio.c 2014-04-01 08:08:07 -03:00
John Schmidt
7464b07c22 Move mch_expandpath from os_unix.c 2014-04-01 08:08:07 -03:00
John Schmidt
7034903591 Move pathcmp from misc2.c 2014-04-01 08:08:07 -03:00
John Schmidt
2a6df95fb5 Move same_directory from misc2.c 2014-04-01 08:08:07 -03:00
John Schmidt
e29e956348 Move after_pathsep from misc2.c 2014-04-01 08:08:07 -03:00
John Schmidt
2cb026c65c Move fix_fname from buffer.c 2014-04-01 08:08:07 -03:00
John Schmidt
7052b85192 Move functions from window.c 2014-04-01 08:08:07 -03:00
John Schmidt
f5082d0a70 Move simplify_filename from tag.c 2014-04-01 08:08:07 -03:00
Julian Orth
55d95c1cd0 remove HAVE_{ISWUPPER,ISWLOWER,TOWUPPER,TOWLOWER} 2014-03-31 21:24:59 -03:00
Julian Orth
079c47ed7b remove HAVE_STDARG_H 2014-03-31 21:24:59 -03:00
Julian Orth
2bc68462b2 remove HAVE_INTTYPES 2014-03-31 21:24:59 -03:00
Julian Orth
22a1a26cad remove HAVE_MATH_H 2014-03-31 21:24:59 -03:00
Julian Orth
60a7ad8a47 remove HAVE_SETJMP_H 2014-03-31 21:24:59 -03:00
oni-link
f9b5ca8b85 Remove feature HAVE_QSORT
qsort conforms to C99, so we don't need our own version.
2014-03-31 21:24:59 -03:00
Nicolas Hillegeer
7b14caf604 alloc: xmalloc and xrealloc can't return null
With this annotation/function attribute, we can inform gcc that these
functions never return null, which can save a lot of redundant null checks.
2014-03-31 18:42:17 -03:00
Nicolas Hillegeer
22e17e25f1 func-attr: add some extra handy function attrs
The attributes in question are:

- nonnull: specify whether a function argument cannot/may not be null
- returns_nonnull: specify whether a function will not return a null
  pointer (example: xmalloc can't return null, so it should be annotated as
  such). Only available from gcc 4.9 onwards.

Currently these attributes are only supported by gcc.
2014-03-31 18:42:17 -03:00
Nicolas Hillegeer
f5db0d01ba func-attr: clang 3.5 doesn't support alloc_size
The attribute was removed in commit c047507 in the clang repository as it
was never properly implemented anyway. This fixes compiling with clang 3.5.

Fixes issue #429
2014-03-31 18:42:17 -03:00
John Schmidt
5d30654512 Rename ga_init2() to ga_init() 2014-03-31 14:42:11 -03:00
John Schmidt
e02790cad4 Inline ga_init() 2014-03-31 14:42:11 -03:00
Thiago de Arruda
a4c77ab5f0 Fix shell.{c,h} comments to match the style guide 2014-03-31 09:20:24 -03:00
Thiago de Arruda
c7d3e85dc8 Add doxygen comments to the functions in shell.c 2014-03-31 08:34:27 -03:00
Thiago de Arruda
ab61c2caa7 Rewrite show_shell_mess as a ShellOpts flag 2014-03-31 08:07:47 -03:00
Thiago de Arruda
206a38871f Update call_shell signature to use ShellOpts 2014-03-31 08:07:47 -03:00
Thiago de Arruda
0d61b1c470 Refactor SHELL_* defines into enum typedef
The SHELL_* defines are the bitflags that can be passed to `mch_call_shell`.
The enum is defined in 'os/shell.h', where all shell-related functions will
eventually be defined.
2014-03-31 08:07:47 -03:00
Thiago de Arruda
607e1c7ee4 Refactor/cleanup argument parsing functions 2014-03-31 08:07:47 -03:00
Thiago de Arruda
f496d619a9 Extract shell_build_argv from mch_call_shell 2014-03-31 08:07:47 -03:00
Thiago de Arruda
c791922224 Make extra_shell_arg a mch_call_shell parameter 2014-03-31 08:07:46 -03:00
Thiago de Arruda
8a61c27b1e Extract shell_count_argc from mch_call_shell 2014-03-31 08:07:46 -03:00
Thiago de Arruda
2d28251a6e Extract shell_skip_word from mch_call_shell 2014-03-31 08:07:46 -03:00
Thiago de Arruda
1ab6cf47bd Split code for counting and parsing arguments 2014-03-31 08:07:46 -03:00
Thomas Wienecke
54782ecfe0 Add doxygen-style comments to functions from os/fs.c. 2014-03-31 07:36:00 -03:00
Felipe Oliveira Carvalho
0e998066b2 xrealloc(): similar to xmalloc()
Replaced all calls to realloc by xrealloc. All `== NULL` tests can be removed
and the code within `!= NULL` tests can be unwrapped.
2014-03-31 07:31:47 -03:00
Felipe Oliveira Carvalho
7bdd1f1898 Document xmalloc() and deprecate lalloc() 2014-03-31 07:31:47 -03:00
Felipe Oliveira Carvalho
5afc1161ca Avoid a seg fault when exiting after OOM error
I'm debugging OOM behavior using http://www.nongnu.org/failmalloc/ on Linux.

gdb environment:

```
set env LD_PRELOAD=libfailmalloc.so
set env FAILMALLOC_SPACE=0xF00000
```

SEGV was happening like this:

```
Starting program: /home/felipe/code/neovim/build/bin/nvim
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
Vim: Error: Out of memory.

Program received signal SIGSEGV, Segmentation fault.
0x00000000004d3719 in getout (exitval=1) at
/home/felipe/code/neovim/src/main.c:836
836       if (*p_viminfo != NUL)
(gdb)
```

After the fix it works as expected:

```
(gdb) set environment LD_PRELOAD=libfailmalloc.so
(gdb) set environment FAILMALLOC_SPACE=0xF00000
(gdb) r
Starting program: /home/felipe/code/neovim/build/bin/nvim
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
Vim: Error: Out of memory.
Vim: Finished.
[Inferior 1 (process 21505) exited with code 01]
(gdb)
```
2014-03-31 07:31:47 -03:00
Felipe Oliveira Carvalho
de1575f3ea xmalloc() that succeeds or gracefully aborts 2014-03-31 07:31:47 -03:00
Justin M. Keyes
d9f5cd6290 Re-integrate FEAT_SIGNS code, close #383
- omit FEAT_NETBEANS_INTG and FEAT_SIGN_ICONS
- omit FEAT_GUI blocks
2014-03-29 20:47:39 -03:00
Nicolas Hillegeer
28b3659955 use function attributes on allocation functions
This should allow gcc/clang/icc to generate better code and clarifies
function intent.
2014-03-29 20:10:06 +01:00
Nicolas Hillegeer
d5708b200a add func_attr.h to be able to use func attribs
Currently enables these for every gnu-like compilers, i.e.: gcc, clang and
icc.
2014-03-29 20:09:57 +01:00
John Schmidt
44e40b02cf Move remove_duplicates to garray.c 2014-03-29 13:29:53 -03:00
John Schmidt
f5154d7451 Extract path.c from misc1.c 2014-03-29 13:29:52 -03:00
Thomas Wienecke
4e29a820b6 Address clint warnings and other style issues.
* Add const.
* Fix conditions (move && from end to start of line).
* Use int32_t instead of long.
* Use //-style comments.
2014-03-27 19:57:55 -03:00
Thomas Wienecke
5762c4e528 Rename mch_* functions to os_* in os module. 2014-03-27 19:57:55 -03:00
Thiago de Arruda
3f7011ab91 Fix prepare watcher teardown in the event loop 2014-03-27 19:22:44 -03:00
Thiago de Arruda
e995b21567 Re-integrate FEAT_FILTERPIPE code
This feature was accidentally removed when doing the initial import from vim. It
makes vim use pipes instead of temporary files for filtering buffers through
shell commands.

I found that this was missing when looking for references of
SHELL_READ/SHELL_WRITE outside mch_call_shell`.

When `mch_call_shell` is reimplemented on top of libuv process management
facilities, pipes will always be used for communication with child processes so
it makes sense to enable the feature permanently.
2014-03-27 17:36:32 -03:00
Thiago de Arruda
1e8eb4e2c6 Make EventType enum private to input.c
This enum doesn't need to be public since `event_poll` is only interested in
user input(but other events may be handled by libuv callbacks).
2014-03-27 17:25:31 -03:00
John
7326894a06 Cleanup of indent.c to make it comply with style guide.
- Uncrustify indent.c
- Fix comments
- Fix whitespace
- Format get_lisp_indent (needs to be refactored completely)
- Fix endline comments
- Change to postincrement
- Fix clint.py errors
- Move static function last
- Fix blank endlines
2014-03-27 11:55:56 -03:00
Thiago de Arruda
452804638d Reimplement input functions on top of libuv
The functions `mch_inchar`, `mch_breakcheck`, `mch_char_avail` were
reimplemented on top of libuv. Here's how it works:

- When Neovim needs to wait for characters, it will transfer control to libuv
  event loop.
- When the libuv event loop gets user input, it will transfer control back to
  Neovim
- Neovim uses the `input_read` function to get the actual data read by libuv.

With this scheme its possible to keep Neovim single-threaded while enjoying the
benefits provided by libuv.

This commit leaves SIGWINCH broken for now
2014-03-26 18:30:18 -03:00
Felipe Oliveira Carvalho
f8432ef127 Use realloc instead of vim_realloc 2014-03-26 18:29:17 -03:00
Felipe Oliveira Carvalho
580ababcb5 HAVE_AVAIL_MEM is always undefined. Remove tests and dead code
Defining HAVE_AVAIL_MEM doesn't even build. The code tries to call
`mch_avail_mem` which is not defined.
2014-03-26 18:29:17 -03:00
Felipe Oliveira Carvalho
83161200c4 Remove MEM_PROFILE related code
Code around `#ifdef MEM_PROFILE` was used to profile vim's memory
comsumption. It's very likely broken as new code is using malloc() and free()
directly.

In this day and age, valgrind can solve in a much reliable way what
this code was trying to do.
2014-03-26 18:29:17 -03:00
Felipe Oliveira Carvalho
bd78282940 Use memcmp instead of vim_memcmp 2014-03-26 16:28:13 -03:00
Felipe Oliveira Carvalho
07dad7acf3 Use memmove instead of mch_memmove 2014-03-26 16:28:13 -03:00
Petter Wahlman
dbc904956a Prefer enums over incremental defines 2014-03-26 16:26:56 -03:00
Felipe Oliveira Carvalho
ed3e9d51ac Use memset instead of vim_memset
Ran some commands on terminal, reviewed changes, and made some manual changes
too.

    find src | xargs perl -i -p -e "s/vim_memset/memset/g"
    git grep -l memset | egrep "\.c$" | xargs perl -i -p -e \
        's/(#include "vim\.h")/#include <string.h>\n\n\1/g'
2014-03-25 18:57:02 -03:00
Felipe Oliveira Carvalho
68bc6bce29 Do not include farsi.c in main.c
- Change CMakeLists.txt to compile farsi.c normally
 - Add const to global variables in farsi.h and define them in farsi.c (no need
   to include farsi.h with DO_INIT defined in globals.h)
 - Include farsi.h where necessary
 - Include all necessary headers in farsi.c
 - Move farsi function declarations from main.h to farsi.h
2014-03-25 18:48:45 -03:00
Felipe Oliveira Carvalho
b7f953b9e4 Move some #defines from farsi.h to farsi.c 2014-03-25 18:48:45 -03:00
Thiago de Arruda
32f118a47f Implement mch_delay on top of libuv
Needed to temporarily move two static variables from os_unix.c to 'globals.h'
as those are shared by other functions still in os_unix.
2014-03-24 19:25:07 -03:00
Felipe Oliveira Carvalho
ed42c808b6 inline arabic_char() 2014-03-24 18:23:24 -03:00
Felipe Oliveira Carvalho
5c66dfea3c Reformat new function in arabic.c to comply with style guide 2014-03-24 18:23:24 -03:00
Felipe Oliveira Carvalho
8b2a5e678e Move arabic.h #defines from arabic.h to arabic.c
- Move arabic_shape() decl from main.h to arabic.h
 - Move arabic_combine() and arabic_maycombine() from mbyte.c to
   arabic.c as these functions use the #defines I moved.
 - Remove the unnecessary include of arabic.h in globals.h
 - Remove include of arabic.c (sic) in main.c (change CMakeLists.txt to compile
   arabic.c normally)
2014-03-24 18:23:24 -03:00
Felipe Oliveira Carvalho
fd6fd35eef Turn ARABIC_CHAR into a function 2014-03-24 18:23:23 -03:00
John Szakmeister
7bd4d68d93 Don't require busted.
Only provide the unittest target if busted was found.  And only build
nvim-test if the unittest target exists by excluding nvim-test from all.
Note: this means nvim-test won't be built by default, but it will be
built when you try to run unittests.
2014-03-23 05:42:18 -04:00
Thiago de Arruda
9a277a612f Update to the newest libuv version 2014-03-22 09:06:38 -03:00
John Szakmeister
1eed86883b Deal with the missing dependencies for libuv.
Since libuv.pc is broken at the moment, try to determine libuv's
dependencies ourselves.  This ports most of the checks from libuv into
our CMake build, and fixes the build on other unix platforms.
2014-03-21 15:22:00 -04:00
John Szakmeister
0b2f6a0cf4 Revamp the build system.
This achieves several goals:

 * Less reliance on scripts so we have better portability to Windows
   (though we still have a ways to go for proper Windows support).
   Luajit, luarocks, moonscript, and busted are all installed via CMake
   now.
 * Trying to make use of pkg-config to get the correct libraries.  The
   latest libuv is still broken in this regard, but we'll at least be in
   a position to use it.
 * Allow the use of Ninja or make.  The former runs faster in many
   environments, and automatically makes use of parallel builds.

This also allows for system installed dependencies--though not through
the Makefile just yet--and adds support for FreeBSD.

This also make us build libuv and luajit as static libraries only, since
we're only concerned about having static libraries for our bundled
dependencies.
2014-03-21 15:22:00 -04:00
Felipe Oliveira Carvalho
5dd0ce4263 printer_opts was left unitilized after #378 2014-03-21 14:13:27 -03:00
Marcel Krüger
7efc429276 No longer try to use standalone termcap 2014-03-19 21:15:40 +01:00
Petter Wahlman
edabc6f4c7 adapt to the style guildelines
semi-automated harvest of low hanging fruit:
change the unorthodox use of whitespace.
2014-03-19 07:53:16 -03:00
Felipe Oliveira Carvalho
59f2430a8d Delete structs.h by spliting it and moving code to other headers
Here's the list of squashed commits (for more info, see PR #378).

 - Define guicolor_T as a typedef in syntax.h
 - Move a big chunk of code from structs.h to buffer_defs.h
 - Move aco_save_T from structs.h to fileio.h
 - Move option_table_T from structs.h to hardcopy.h

	Aditionally:

	 - Move the printer_opts global to hardcopy.c
	 - Delete structs.h. Include buffer_defs.h where structs.h was included
	   before.
	 - Add header guards to option_defs.h

 - Put mark types and constants in new mark_defs.h
 - Move undo structs to undo_defs.h
 - Move memfile structs to new memfile_defs.h
 - Move expand_T and cmdmod_T to ex_cmds_defs.h
 - Move memline_T to memline_defs.h
 - Move many defs and types to ex_eval.h
 - Move syntax related types to syntax_defs.h
 - Move struct memfile to memfile_defs.h
 - struct buffblock and struct buffheader moved back to buffer_defs.h
 - Move some datatypes to hashtab.h and eval_defs.h
 - Move the buffer_defs.h include and TODOs for remaining unrelated types in buffer_defs.h
2014-03-18 20:19:19 -03:00
David Z. Chen
baab238271 Issue #311 - Clean up blowfish.c/h, charset.c/h, diff.c/h, digraph.c/h, garray.c/h, hashtab.c/h, popupmnu.c/h, sha256.c/h, version.c/h. Update uncrustify to move logical operators to the beginning of the line when splitting. Also, clean up arabic.c/h and farsi.c/h 2014-03-16 12:00:41 -03:00
Thomas Wienecke
1949acc806 Revive vim_fname (-> os_file_exists); fix misuse of mch_getperm.
* Move vim_fname from misc1 to os/fs:os_file_exists.
* Add unit tests for os_file_exists.
* Replace misuse of mch_getperm with os_file_exists.
2014-03-15 11:50:22 -03:00
Thomas Wienecke
c83e8b4dc7 Move and refactor mch_[gs]etperm to os/fs module. 2014-03-15 11:50:22 -03:00
John
231d4511d1 Moved more functions from misc1.c to indent.c 2014-03-15 11:42:27 -03:00
James McCoy
a86b1a129e Use include paths relative to src/
As described in Google's style guide, the basis for Neovim's

> All of a project's header files should be listed as descendants of the
> project's source directory without use of UNIX directory shortcuts .
> (the current directory) or .. (the parent directory).

Add src as an include directory to facilitate this.
2014-03-14 21:54:32 -03:00
James McCoy
046bc5f478 Adapt include guards to the style guide 2014-03-14 21:54:32 -03:00
John
7c51374a82 Extract indent_c.c from misc1.c 2014-03-14 21:19:46 -03:00
Felipe Oliveira Carvalho
d012255ee1 Remove useless sizeof(uint32_t) == 4 test 2014-03-14 21:03:28 -03:00
Felipe Oliveira Carvalho
d38b6933e2 Replace UINT32_T by uint32_t 2014-03-14 21:03:28 -03:00
Felipe Oliveira Carvalho
8b498d94d8 Include <stdint.h> in types.h 2014-03-14 21:03:28 -03:00
Thiago de Arruda
c3a88eb8ea Remove remaining hangul-related code 2014-03-14 08:29:47 -03:00
oni-link
7f23ec398d Fix: Use an assert to make sure, an error message can be copied into buffer buf in mch_dirname().
The copied error message is NUL-terminated.
2014-03-13 17:25:22 -03:00
Stefan Hoffmann
33eb031c01 refactored part of expand_env_esc() into mch_get_user_directory() 2014-03-13 17:18:44 -03:00
Stefan Hoffmann
ad77ff53d3 removed get_user_name() and replaced calls with mch_get_user_name() 2014-03-13 17:18:44 -03:00
Stefan Hoffmann
ce31410c79 moved mch_get_user_name() and mch_get_uname() into os/users.c 2014-03-13 17:18:44 -03:00
Stefan Hoffmann
6fd9f090fc refactored logic from init_users() into mch_get_usernames() 2014-03-13 17:18:43 -03:00
Thiago de Arruda
f6ace9962d Refactor travis build to use clang's sanitizers
- Valgrind configuration removed
- Fix errors reported by the undefined behavior sanitizer
- Travis will now run two build steps:
  - A normal build of a shared library for unit testing(in parallel with gcc)
  - A clang build with some sanitizers enabled for integration testing.

After these changes travis will run much faster, while providing valgrind-like
error detection.
2014-03-13 15:26:28 -03:00
Felipe Oliveira Carvalho
3cac32e49c Remove CURSOR_SHAPE #ifdef tests
See issue #333
2014-03-10 05:55:59 -03:00
Felipe Oliveira Carvalho
1684bec635 Extract cursor_shape.c from misc2.c and types/consts from structs.h 2014-03-10 05:55:59 -03:00
Felipe Oliveira Carvalho
6089b26016 Move exarg_T and cmdarg_T from structs.h to normal.h 2014-03-09 09:37:00 -03:00
Felipe Oliveira Carvalho
bd9cd693e7 Extract pos.h from structs.h
This will make it much simpler to move the other types in structs.h
which depend on `pos_T` and `lpos_T`.
2014-03-09 09:37:00 -03:00
Wilberto
b33096127c Change neo* configurations to n* configurations 2014-03-09 09:02:54 -03:00
Thomas Wienecke
ab0c96187c Fix bugs, clean code, add tests.
* Add const specifiers, update comments, add assert.
* Move os_unix.moon tests to os/fs.moon + clean tests.
* Add uv_fs_req_cleanup call.
* Add tests with absolute paths to mch_isdir.
* Add to_cstr to test/unit/helpers.moon and fix respective unit tests.
2014-03-07 17:30:39 -03:00
Thomas Wienecke
e59f9872e5 Remove unused return values. 2014-03-07 17:30:39 -03:00
Thomas Wienecke
b552a202f4 Move definition of helper function below their usage. 2014-03-07 17:30:39 -03:00
Thomas Wienecke
9fc67aa7a3 Simplify mch_can_exe extracting is_executable_in_path. 2014-03-07 17:30:39 -03:00
Thomas Wienecke
ef03a8c52a Declare is_executable as static and remove its unit tests.
Testing the public interface mch_can_exe should suffice. Every former
test of is_executable has a counterpart in the tests of mch_can_exe.
Thus we can keep private things private.
2014-03-07 17:30:39 -03:00
Thomas Wienecke
d5b223afe2 Move mch_can_exe, executable_file to os/fs.c.
* Rename executable_file to is_executable.
2014-03-07 17:30:39 -03:00
scott-linder
f479abddd7 Added MODIFIED_BY and updated version information. 2014-03-07 16:58:58 -03:00
Thiago de Arruda
80cb604cc8 Fix memory leak in eval7 2014-03-07 15:27:05 -03:00
Thiago de Arruda
2f1a2eb0f2 Fix free_all_mem and EXITFREE definition
Because of the '$' in `if(DEFINED $ENV{VALGRIND_CHECK})` EXITFREE wasn't being
defined, so the `free_all_mem` wasn't being included or called in the resulting
binary.

This commit fixes that, and also adds includes needed for `free_all_mem`
compilation.
2014-03-07 11:58:06 -03:00
David Z. Chen
0412ee7440 Issue #311 - Clean up arabic.c, arabic.h, farsi.c, farsi.h. Tweaks to uncrustify.cfg. 2014-03-07 11:06:02 -03:00
Thiago de Arruda
998541eb04 Remove hangul input support
Vim [documentation](http://vimdoc.sourceforge.net/htmldoc/hangulin.html), says
that hangul support is scheduled to be removed. I think it's safe to say we
don't want to support a feature even vim is considering removing.

Everything still compiles even after removing the header, so it's not being
used.

Before doing the initial import to neovim's repository, I had to tweak this
module to make it compile for terminal. It was a mistake that is now being
corrected.
2014-03-07 09:23:59 -03:00
Felipe Oliveira Carvalho
a86da86d98 Move some types and consts from structs.h to other headers
- `foldinfo_T` to `fold.h`
 - `context_sha256_T` to `sha256.h`
 - `tagname_T` to `tag.h`
 - `pumitem_T` to `popupmnu.h`
 - `prt_*_T` to  hardcopy.h`
 - `CPT_*` consts to `edit.h`
 - `vimmenu_T`, `MNU_HIDDEN_CHAR`, and `MENU_*` constants to `menu.h`
2014-03-07 08:02:38 -03:00
Felipe Oliveira Carvalho
3005681a02 Move garray_T from structs.h to garray.h 2014-03-07 08:02:38 -03:00
Thiago de Arruda
cab5c25c70 Fix memory leak and enable valgrind on travis 2014-03-07 00:21:12 -03:00
Stefan Hoffmann
f2433aedc8 cleanup environment variable handling + unit tests
* removed a putenv() implementation which isn't needed anymore
  * mch_getenv() and mch_setenv() are now functions in src/os/env.c
  * removes direct calls to getenv() and setenv() outside of src/os/env.c
  * refactored the logic of get_env_name into mch_getenvname_at_index
  * added unittests for the functions in os/env.c
2014-03-06 13:38:45 -03:00
Thomas Wienecke
fc86866402 Fix style issues.
* Rename mch_full_name to mch_get_absolute_path.
* Rename mch_is_full_name to mch_is_absolute_path.
* Add a lot of missing parentheses.
* Remove yoda-conditions for consistency.
* Remove spaces in function declaration.
2014-03-06 13:10:58 -03:00
Felipe Oliveira Carvalho
fdba1761f6 Extract keymap.c from misc2.c 2014-03-06 07:16:21 -03:00
Felipe Oliveira Carvalho
9c6811b23a Extract crypt.c from misc2.c 2014-03-06 07:16:21 -03:00
Simen Endsjø
3925d951a1 Remove USE_SYSTEM and code only run under USE_SYSTEM 2014-03-05 15:12:21 -03:00
Thomas Wienecke
8bb672e6a0 Port mch_isdir to libuv. 2014-03-05 15:01:19 -03:00
Thomas Wienecke
71ff9337d9 Remove static declaration of executable_file.
Since static functions are only visible in the file in which they are
defined, this needs to be done in order to unit test the function.
2014-03-05 15:01:19 -03:00
Simen Endsjø
d3be9f3796 Assert that vim_strsize and vim_strnsize gets a non-null parameter. 2014-03-04 21:02:57 -03:00
Thomas Wienecke
92a0374d7b Rename and refactor mch_FullName.
* Rename mch_FullName to mch_full_name to match the style guide.
* Add mch_full_dir_name, which saves the absolute path of a given
directory relative to cwd into a given buffer.
* Add function append_path, which glues together two given paths with a
slash.
* Adapt moonscript coding style to the tests.
2014-03-04 06:54:08 -03:00
Gaelan Steele
bbf6442433 Move some of misc1.c to indent.c.
My little contribution to #209.
2014-03-03 10:12:10 -03:00
Alexander Bolodurin
a21c8589ef Remove traces of old custom undo memory manager.
There were two memory management implementations,
standard malloc-based, and a custom allocator.

Removed in rev 2230 in the Mercurial repo.
2014-03-03 09:50:41 -03:00
Alexander Bolodurin
d8b37824b5 Remove dead stack-checking code.
Code under HAVE_STACK_LIMIT is not used.
The definition was commented out in rev 180 of the original
Mercurial repo, and then completely removed in rev 2520,
but the code guarded by it was left in.
2014-03-03 09:50:41 -03:00
Nicolas Pierron
d9283c4927 Remove __ARGS macro. Close #205
This is a squash of all commits sent to #81.

- Remove unused undef of __ARGS.
- Fix mch_rename declaration.
- Follow changes related to moved & extracted files.
- Properly indent function declarations of getchar.h and quickfix.c.
2014-03-02 14:19:59 -03:00
Nicolas Pierron
8917bf25bc Clean-up main.c: follow STRNICMP replacement. 2014-03-01 17:01:20 -03:00
Felipe Oliveira Carvalho
e18c075b70 Extract file_search.c from misc2.c
Continue to split misc2.c in many other files (see #209).

The only changed I made to the moved code was adding
`vim_free(ff_expand_buffer)` to `free_finfile()`. This is was needed
because `ff_expand_buffer` was moved from `misc2.c` to `file_search.c`.
2014-02-28 18:37:01 -03:00
scott-linder
007a19c497 Added a types.h with vim.h unsigned int typedefs. 2014-02-28 18:28:27 -03:00
Nicolas Hillegeer
3f29a02166 MAKE: ask gnulikes to warn and be pedantic + fixes
It seems clang 3.4 thinks the codebase is in fantastic shape and gcc 4.9.0
has only minor niggles, which I fixed:

- fix uninitialized member warning:
    In DEBUG mode the expr member doesn't get properly initialized to NULL.

- fix warnings about directive inside of macro's:
    On some platforms/compilers, sprintf is a macro. Putting macro directives
    inside of a macro is unportable and gcc 4.9 warns about that.

- fix signed vs. unsigned comparison warning:
    The in-memory table will luckily not even come close to the limits imposed
    by ssize_t. If it ever reaches that, we've got bigger problems.
2014-02-28 11:48:43 -03:00
Felipe Oliveira Carvalho
6eece5895e Fix a 'garbage value' warning found by Clang's static analyzer
- Initialize lists in paragraph_start()
 - Remove two dead stores
2014-02-28 08:49:34 -03:00
John Szakmeister
d2e567a835 Use _NSGetEnviron on Mac OS X to gain access to environ.
When building nvim as a shared library for testing, environ is not
exposed.  In order to gain access to the environment variables, you must
get a pointer to them from _NSGetEnviron().

It appears that this may affect the FreeBSD platform too.
2014-02-28 08:15:27 -03:00
Felipe Oliveira Carvalho
55e00334fb Include "garray.h" in ex_cmds2.c 2014-02-28 06:43:20 -03:00
Felipe Oliveira Carvalho
410f0a27c5 Extract garray.c from misc2.c
Start to split misc2.c in many other files (see #209).
2014-02-28 06:43:20 -03:00
Scott Nielsen
79882bc7bd Use cmake module instead of shared for nvim-test
On a Mac using shared creates libnvim-test.dylib which cannot be found
by the hardcoded .so extension in helpers.moon, causing the unittests to
fail. However, using module creates libnvim-test.so, allowing the tests
to run. There will still be problems running the tests on windows,
because both shared and module create dll file which will not be found
by in helpers.moon.
2014-02-28 05:50:16 -03:00
Thiago de Arruda
4600b9c035 Add unit test running to travis again 2014-02-27 18:51:53 -03:00
Thiago de Arruda
7637c2b664 Disable unit tests until fixed for travis 2014-02-27 18:37:57 -03:00
Thiago de Arruda
d04ca90f5c Add basic infrastructure for unit testing
Tests will be written using the [moonscript](http://moonscript.org/) language,
a lua 'dialect' that is whitespace-significant and has a syntax similar to
coffeescript. The test framework used is [busted](http://olivinelabs.com/busted/),
a bdd framework for lua/moonscript.

Luajit has a nice ffi module, which lets lua programs link shared libraries and
call it's functions without writing any C code.

To take advantage of this fact for testing C functions, a new target was added
to CMakeLists.txt, which compiles neovim as a shared library that is loaded by
the process running the tests.

This commit adds necessary code for downloading and installing a lua package
manager(luarocks) locally. It wasn't added as a subtree because there are quite
a few blobs in its source tree.
2014-02-27 17:55:10 -03:00
Alexis Hildebrandt
05b9e11584 CMakeLists: Improve handling of libintl
by refactoring it into a separate CMake module
2014-02-27 19:11:48 +00:00
Alexis Hildebrandt
fba074d994 CMakeLists: Use nvim target name 2014-02-27 19:11:48 +00:00
John Szakmeister
95db76e280 Improve libintl detection and linking.
This makes it so that a self-installed libintl is now detected and used.
It also attempts to locate a homebrew version of the library, if that
exists.
2014-02-27 19:11:48 +00:00
Alexis Hildebrandt
e728ce95ef Use GNU gettext from homebrew on Mac if available 2014-02-27 19:11:48 +00:00
Rui Abreu Ferreira
82b724af4b Use FindCurses to find curses libraries
- Some systems have the FindCurses.cmake module to find
  the curses/ncurses libraries using find_package(). And
  in some CheckLibraries is not very reliable, so as
  fallback FindCurses is now used if no other option
  works.
2014-02-27 09:23:15 +00:00
Thiago de Arruda
a2ce1df772 Modify travis configuration to install valgrind
This should fix previous build failures
2014-02-26 22:23:51 -03:00
Thiago de Arruda
a97c1754ad Add test reporting to travis script 2014-02-26 21:33:39 -03:00
Thiago de Arruda
baaf24acea Add valgrind suppression file 2014-02-26 16:21:20 -03:00
Thiago de Arruda
c002ffe2f3 Temporarily remove valgrind check in travis build 2014-02-26 15:57:27 -03:00
Thiago de Arruda
cb9a368445 Add configuration to help debug memory leaks 2014-02-26 15:48:26 -03:00
Rich Wareham
de4fbf92d0 link to rt if it provides clock_gettime
As noted in #128, if clock_gettime is provided by librt then it does not
end up being linked into the static libuv.a binary. This might be
considered a bug in libuv but we can address it here.

Detect if librt provides the clock_gettime symbol and, if so, append it
to the list of libraries linked into nvim. On non-librt systems the
behaviour should be as before.
2014-02-26 07:10:21 -03:00
Rich Wareham
2a6780431e make use of libuv when found by CMake 2014-02-26 07:09:11 -03:00
Scott Nielsen
def17b25fe Remove final build warning
This commit removes a K&R promoted parameter error, the final warning
I have when building.

I realize that this creates only one function that is written in a
different style, but I thought it might be worth it to have a warning
free build.
2014-02-26 06:35:29 -03:00
Scott Nielsen
a74c059a3e Remove implicit declaration of vim_strrchr and vim_strncpy 2014-02-26 06:04:30 -03:00
scott-linder
0ef90c13b7 Removes 'proto' dir
See #137 for the issue.

Every header in the proto directory was:

* Given include guards in the form

    #ifndef NEOVIM_FILENAME_H
    #define NEOVIM_FILENAME_H
        ...
    #endif /* NEOVIM_FILENAM_H */

* Renamed from *.pro -> *.h
* Moved from src/proto/ to src/

This would have caused conficts with some existing headers in src/;
rather than merge these conflicts now (which is a whole other can of
worms involving multiple and conditional inclusion), any header in src/
with a conflicting name was renamed from *.h -> *_defs.h (which may or
may not actually describe its purpose, the change is purely a
namespacing issue).

Once all of these changes were made a script was developed to determine
what #includes needed to be added to each source file to describe its
dependencies and allow it to compile; because the script is so short
and I'll just list it here:

    #! /bin/bash

    cd $(dirname $0)

    # Scrapes `make` output for provided error messages and outputs #includes
    # needed to resolve them.
    #   $1 : part of the clang error message between filename and identifier
    list_missing_includes() {
        for file_missing_pair in $(CC=clang make 2>&1 >/dev/null | sed -n "s/\/\(.*\.[hc]\).*$1.*'\(.*\)'.*/\1:\2/p"); do
            fields=(${file_missing_pair//:/ })
            source_file=${fields[0]}
            missing_func=${fields[1]}
            # Try to find the declaration of the missing function.
            echo $(basename $source_file) \
                \#include \"$(grep -r "\b$missing_func __ARGS" | sed -n "s/.*\/\(.*\)\:.*/\1/p")\"
        # Remove duplicates
        done | sort | uniq
    }

    echo "Finding missing function prototypes..."
    list_missing_includes "implicit declaration of function"
    echo "Finding missing identifier declarations..."
    list_missing_includes "use of undeclared identifier"

Each list of required headers was added by hand in the following format:

    #include "vim.h"
    #include "*_defs.h"
    #include "filename.h"
    /* All other includes in same module here, in alphabetical order. */
    /* All includes from other modules (e.g. "os/*.h") here in alphabetical
     * order. */
2014-02-26 04:17:27 -03:00
Thomas Wienecke
82e0636e78 Delete local function strerror and USE_GETCWD define.
Both are useless after porting mch_dirname to libuv.
2014-02-25 21:24:52 -03:00
Thomas Wienecke
8437a4c972 os_unix: Port mch_FullName and mch_isFullName to libuv.
Basically just delete conditional use of fchdir, since the other called
mch_* functions are already ported to libuv.
2014-02-25 18:59:22 -03:00
Thomas Wienecke
1e2da25d3d os_unix: Use libuv uv_cwd instead of getcwd/getwd. 2014-02-25 14:26:21 -03:00
Rich Wareham
4961654a2a CMakeLists: add install target for nvim 2014-02-25 13:20:14 -03:00
Thiago de Arruda
d5f74cf8bb Add missing include guard to os module 2014-02-24 22:41:39 -03:00
Thiago de Arruda
c067e5580b Create new OS module
This module will contain all functions that perform OS calls such as IO,
filesystem access, etc.
2014-02-24 22:17:46 -03:00
Rich Wareham
0f438e42a8 move libuv functions to os.c and io.c module
Despite being an io library, the functions currently implemented with
libuv include some non-I/O tasks like getting the total amount of
memory.
2014-02-24 22:00:03 -03:00
Rich Wareham
65e7610655 os_unix: use libuv total memory function 2014-02-24 22:00:03 -03:00
Rich Wareham
68d8ab54a1 os_unix: switch to libuv chdir() function 2014-02-24 22:00:03 -03:00
Rich Wareham
b58f079d8a os_unix: add #include for libuv 2014-02-24 22:00:03 -03:00
scott-linder
9db0fc3582 Changed name of binary (vim -> nvim).
Also updated affected config files and test49.vim
2014-02-24 18:48:51 -03:00
Ashley Hewson
eedb6a3ad7 Merge pull request #79 from jdiez17/has_neovim
Added 'neovim' to the feature list, following discussion on #44
2014-02-24 21:17:36 +00:00
Rich Wareham
fd346a95fa use CMake's built in pthread detection
CMake ships with a standard FindThreads module which can be used to a)
test for a threading library and b) confirm that it is pthread. It also
allows the hard-coding of the threading library name to be removed from
``src/CMakeLists.txt``.

Make it an error not to have a pthread library installed and indicate to
CMake that we strongly prefer pthread to any other platform threading
library.
2014-02-24 18:52:12 +00:00
jdiez17
be3ce617c7 Changed binary output directory from src/ to bin/ 2014-02-24 14:45:07 -03:00
Christian Wellenbrock
79321c62d5 Use neovim versions of ~/.vim and ~/.vimrc 2014-02-24 14:13:11 -03:00
scott-linder
b76c358f3d Convert function declarations from K&R to ANSI style.
cproto (http://invisible-island.net/cproto/) was used to do the bulk of
the work in batch; even the most recent version had some issues with
typedef'd parameters; a quick "patch" was to modify `lex.l` to
explicitly include all vim typedefs as known types. One example from
`vim.h` is

    typedef unsigned char char_u;

which was added in `lex.l` as

    <INITIAL>char_u    { save_text_offset(); return T_CHAR; }

Even with these changes there were some problems:

* Two files (`mbyte.c` and `os_unix.c`) were not cleanly converted.
* Any function with the `UNUSED` macro in its parameter list was not converted.

Rather than spend more time fixing the automated approach, the two files
`mbyte.c` and `os_unix.c` were converted by hand.

The `UNUSED` macros were compiler specific, and the alternative, generic
version would require a different syntax, so in order to simplify the
conversion all uses of `UNUSED` were stripped, and then the sources were
run back through cproto. It is planned to reconsider each use of
`UNUSED` manually using a new macro definition.
2014-02-24 09:48:18 -05:00
jdiez17
da2906f28e Added 'neovim' to the feature list, following discussion on #44 2014-02-23 16:49:16 +00:00
Mitchell Rosen
19296296db Clean up main.c:parse_command_name 2014-02-22 12:40:59 -08:00
Mitchell Rosen
6ab8968685 Cleanup refactoring in main 2014-02-22 10:13:44 -03:00
aph
63b571dfba fix build on OSX 2014-02-01 17:17:59 +00:00
Thiago de Arruda
8253e29971 Wrap calls to 'get_mess_env' into LIBINTL #ifdefs 2014-02-01 12:22:15 -03:00
Thiago de Arruda
3da78364cc Remove more #ifdef dead code 2014-02-01 11:17:43 -03:00
aph
2d00ead2e5 Fix build on OSX/Archlinux and add README
- remove SELinux dependency for now
- OSX: find libintl.h
- OSX: fix compile errors
- OSX: use hack around gettext nonsense
- fix gettext on ubuntu
- work around Arch's lack of -ltermcap
- add README.md
2014-02-01 10:34:04 -03:00
Thiago de Arruda
72cf89bce8 Import vim from changeset v5628:c9cad40b4181
- Cleanup source tree, leaving only files necessary for compilation/testing
- Process files through unifdef to remove tons of FEAT_* macros
- Process files through uncrustify to normalize source code formatting.
- Port the build system to cmake
2014-01-31 10:39:15 -03:00