1
0
mirror of https://github.com/SpaceVim/SpaceVim.git synced 2025-03-12 17:55:41 +08:00

Fix Objective C language support (#4215)

This commit is contained in:
Wang Shidong 2021-04-18 15:34:41 +08:00 committed by GitHub
parent 669a164d44
commit 172579a260
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 30 additions and 10 deletions

View File

@ -14,6 +14,7 @@ let s:self.__aliases = {
\ 'typescriptreact' : 'TypeScript React',
\ 'python' : 'Python',
\ 'java' : 'Java',
\ 'objc' : 'Objective-C',
\ }

View File

@ -155,27 +155,35 @@ function! SpaceVim#layers#lang#c#config() abort
call SpaceVim#mapping#gd#add('cpp',
\ function('s:go_to_def'))
" TODO: add stdin suport flex -t lexer.l | gcc -o lexer.o -xc -
let runner1 = {
let c_runner = {
\ 'exe' : 'gcc',
\ 'targetopt' : '-o',
\ 'opt' : ['-std=' . s:clang_std.c] + s:clang_flag + ['-xc', '-'],
\ 'usestdin' : 1,
\ }
call SpaceVim#plugins#runner#reg_runner('c', [runner1, '#TEMP#'])
call SpaceVim#plugins#runner#reg_runner('c', [c_runner, '#TEMP#'])
call SpaceVim#mapping#space#regesit_lang_mappings('c', function('s:language_specified_mappings'))
let runner2 = {
let cpp_runner = {
\ 'exe' : 'g++',
\ 'targetopt' : '-o',
\ 'opt' : ['-std=' . s:clang_std.cpp] + s:clang_flag + ['-xc++', '-'],
\ 'usestdin' : 1,
\ }
call SpaceVim#plugins#runner#reg_runner('cpp', [runner2, '#TEMP#'])
call SpaceVim#plugins#runner#reg_runner('cpp', [cpp_runner, '#TEMP#'])
if !empty(s:c_repl_command)
call SpaceVim#plugins#repl#reg('c', s:c_repl_command)
else
call SpaceVim#plugins#repl#reg('c', 'igcc')
endif
call SpaceVim#mapping#space#regesit_lang_mappings('cpp', funcref('s:language_specified_mappings'))
let objc_runner = {
\ 'exe' : 'gcc',
\ 'targetopt' : '-o',
\ 'opt' : ['-std=' . s:clang_std.objc] + s:clang_flag + ['-xobjc', '-'],
\ 'usestdin' : 1,
\ }
call SpaceVim#plugins#runner#reg_runner('objc', [objc_runner, '#TEMP#'])
call SpaceVim#mapping#space#regesit_lang_mappings('objc', funcref('s:language_specified_mappings'))
call SpaceVim#plugins#projectmanager#reg_callback(funcref('s:update_clang_flag'))
if executable('clang')
let g:neomake_c_enabled_makers = ['clang']
@ -189,6 +197,7 @@ function! SpaceVim#layers#lang#c#config() abort
if s:enable_clang_syntax
auto FileType c,cpp call s:highlight()
endif
au BufRead,BufNewFile *.m set filetype=objc
augroup END
call add(g:spacevim_project_rooter_patterns, '.clang')
if has('nvim')
@ -392,22 +401,32 @@ function! s:update_runner(argv, fts) abort
let default_std = 0
endif
if index(a:fts, 'c') !=# -1
let runner1 = {
let c_runner = {
\ 'exe' : 'gcc',
\ 'targetopt' : '-o',
\ 'opt' : a:argv + (default_std ? [] : ['-std=' . s:clang_std.c]) + s:clang_flag + ['-xc', '-'],
\ 'usestdin' : 1,
\ }
call SpaceVim#plugins#runner#reg_runner('c', [runner1, '#TEMP#'])
call SpaceVim#plugins#runner#reg_runner('c', [c_runner, '#TEMP#'])
endif
if index(a:fts, 'cpp') !=# -1
let runner2 = {
let cpp_runner = {
\ 'exe' : 'g++',
\ 'targetopt' : '-o',
\ 'opt' : a:argv + (default_std ? [] : ['-std=' . s:clang_std.cpp]) + s:clang_flag + ['-xc++', '-'],
\ 'usestdin' : 1,
\ }
call SpaceVim#plugins#runner#reg_runner('cpp', [runner2, '#TEMP#'])
call SpaceVim#plugins#runner#reg_runner('cpp', [cpp_runner, '#TEMP#'])
endif
" update clang_flag for objective-c
if index(a:fts, 'objc') !=# -1
let cpp_runner = {
\ 'exe' : 'gcc',
\ 'targetopt' : '-o',
\ 'opt' : a:argv + (default_std ? [] : ['-std=' . s:clang_std.objc]) + s:clang_flag + ['-xobjc', '-'],
\ 'usestdin' : 1,
\ }
call SpaceVim#plugins#runner#reg_runner('objc', [cpp_runner, '#TEMP#'])
endif
endfunction
" }}}

View File

@ -33,6 +33,7 @@ To use this configuration layer, update the custom configuration file with:
- code completion
- syntax checking
- formatting
- syntax highlighting: Objective-C(`.m`), C(`.c`), CPP(`.cpp`)
## Configuration

View File

@ -20,7 +20,7 @@ This is a list of programming languages supported in SpaceVim:
| AutoHotkey | [lang#autohotkey](https://spacevim.org/layers/lang/autohotkey/) | |
| Bash, Fish, zsh | [lang#sh](https://spacevim.org/layers/lang/sh/) | |
| C# | [lang#csharp](https://spacevim.org/layers/lang/csharp/) | |
| C/C++ | [lang#c](https://spacevim.org/layers/lang/c/) | |
| C/C++/Objective-C | [lang#c](https://spacevim.org/layers/lang/c/) | |
| Clojure | [lang#clojure](https://spacevim.org/layers/lang/clojure/) | |
| CoffeeScript | [lang#coffeescript](https://spacevim.org/layers/lang/coffeescript/) | |
| Crystal | [lang#crystal](https://spacevim.org/layers/lang/crystal/) | |
@ -224,7 +224,6 @@ Before adding these languages, we need to know:
| NXT-G | | |
| Oberon | | |
| Object Rexx | | |
| Objective-C | | |
| Occam | | |
| OpenCL | | |
| OpenEdge ABL | | |