Skip to content

Support isystem flag #10

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
May 1, 2020
Merged

Conversation

davidaurelio
Copy link

In addition to -I, this adds support for the -isystem flag.

The main difference between -I and -isystem is that warnings for the latter will be suppressed. This is useful when using strict warnings for linting, whilst avoiding warnings from third party headers to show up.

In addition to `-I`, this adds support for the [`-isystem` flag][-isystem flag].

The main difference between `-I` and `-isystem` is that warnings for the latter will be suppressed. This is useful when using strict warnings for linting, whilst avoiding warnings from third party headers to show up.

  [-isystem flag]: https://clang.llvm.org/docs/ClangCommandLineReference.html#cmdoption-clang-isystem-directory
@kaste
Copy link
Member

kaste commented May 1, 2020

Hi @davidaurelio!

We're usually hesitant when adding new flags. "clang" has loads of them. Do you think "isystem" is so useful that we should bake it in? (Honestly the "-I" is probably there because it was always here, and removing would be breaking.)

Is it very awkward to just set and use "args" here?

@davidaurelio
Copy link
Author

Hi @kaste,

I can absolutely understand that point.

However, there’s a couple of reasons why I think this is valuable – essentially the same reasons why I is great, and SublimeLinter-clang is so much more pleasant to use than e.g. SublimeLinter-javac:

  1. In large projects, both lists tend to get quite long. I am working on some code bases where this includes a few dozen entries. A list is just so much easier to maintain than having all on a single line. The case for -isystem, as stated in the summary, is that warnings from those paths are suppressed by the compiler, very handy for third party dependencies. (On a side note, having an array for paths for SL-javac would be a great usability improvement).

  2. Having include paths separate from general compiler flags allows to configure the former per project, and the latter in general preferences. This is especially interesting because SL-clang requires -fsyntax-only (should that be filled in automatically?)

@davidaurelio
Copy link
Author

I have another local modification: adding separate configurations for Objective-C and Obj-C++. Worth a PR? Or would you expect users to handle that via args / x?

Also, can I convince you to accept a PR for SL-javac that adds an array for paths?

@kaste kaste merged commit 39476e3 into SublimeLinter:master May 1, 2020
@kaste
Copy link
Member

kaste commented May 1, 2020

Having include paths separate from general compiler flags allows to configure the former per project, and the latter in general preferences.

👍 that's a good reason.

Obviously too long to remember it, but there was clearly non consensus what the default "args" should be, even for "-fsyntax-only". So everything is available via "args".

If you already have the local mod, just push it. The same for "javac" of course. Personally I prefer the list format esp. when it comes to paths.

@kaste
Copy link
Member

kaste commented May 1, 2020

Released as https://github.com/SublimeLinter/SublimeLinter-clang/releases/tag/2.1.0

@davidaurelio
Copy link
Author

Thanks. The other changes are on my work machine. I will push them as soon as I get to it.

davidaurelio added a commit to davidaurelio/SublimeLinter-javac that referenced this pull request May 1, 2020
This adds `-cp` as an additional configuration option to configure the classpath for *javac.*

Per the discussion on SublimeLinter/SublimeLinter-clang#10 it is clear that it is preferred to *not* extra configuration option beyond `args`. However, specifying a long list of paths for *javac* is tedious, as elements are colon-separated and thus cannot be individual elements in an `args` list.

This is completely optional, and offers better maintainability for users working on big projects.
Additionally, it allows to set general flags in the preferences of SublimeLinter, while still offering the possibility of setting custom paths for every project.

It is enough to offer `-cp`, as if `-sourcepath` or `-processorpath` are not specified, the classpath is searched for source files and annotation processors, respectively.

* * *

A comparison for [Litho][]:

```
// -cp
"-cp": [
  "${project_path}/litho-intellij-plugin/src/main/java",
  "${project_path}/litho-sections-widget/src/main/java",
  "${project_path}/litho-processor/src/main/java",
  "${project_path}/litho-rendercore/src/main/java",
  "${project_path}/litho-testing/src/main/java",
  "${project_path}/litho-instrumentation-tests/src/main/java",
  "${project_path}/litho-core/src/main/java",
  "${project_path}/codelabs/props/app/src/main/java",
  "${project_path}/codelabs/layout-spec/app/src/main/java",
  "${project_path}/codelabs/hello-world/app/src/main/java",
  "${project_path}/codelabs/hscroll-height/app/src/main/java",
  "${project_path}/codelabs/state/app/src/main/java",
  "${project_path}/codelabs/updating-ui/app/src/main/java",
  "${project_path}/codelabs/save-state-rotation/app/src/main/java",
  "${project_path}/codelabs/textinput-keyboard/app/src/main/java",
  "${project_path}/codelabs/mount-spec/app/src/main/java",
  "${project_path}/codelabs/events/app/src/main/java",
  "${project_path}/codelabs/group-section-lifecycle/app/src/main/java",
  "${project_path}/litho-sections-core/src/main/java",
  "${project_path}/sample-codelab/src/main/java",
  "${project_path}/litho-sections-debug/src/main/java",
  "${project_path}/litho-annotations/src/main/java",
  "${project_path}/sample-barebones/src/main/java",
  "${project_path}/litho-widget/src/main/java",
  "${project_path}/litho-it/specs/src/main/java",
  "${project_path}/litho-it/processor/src/main/java",
  "${project_path}/litho-it/src/main/java",
  "${project_path}/sample-barebones-kotlin/src/main/java",
  "${project_path}/sample/src/main/java",
  "${project_path}/lib/yoga/src/main/java",
  "${project_path}/litho-espresso/src/main/java",
  "${project_path}/litho-sections-annotations/src/main/java",
  "${project_path}/litho-fresco/src/main/java",
  "${project_path}/litho-sections-processor/src/main/java",
]

// args
"args": [
  "-sourcepath",
  "${project_path}/litho-intellij-plugin/src/main/java:${project_path}/litho-sections-widget/src/main/java:${project_path}/litho-processor/src/main/java:${project_path}/litho-rendercore/src/main/java:${project_path}/litho-testing/src/main/java:${project_path}/litho-instrumentation-tests/src/main/java:${project_path}/litho-core/src/main/java:${project_path}/codelabs/props/app/src/main/java:${project_path}/codelabs/layout-spec/app/src/main/java:${project_path}/codelabs/hello-world/app/src/main/java:${project_path}/codelabs/hscroll-height/app/src/main/java:${project_path}/codelabs/state/app/src/main/java:${project_path}/codelabs/updating-ui/app/src/main/java:${project_path}/codelabs/save-state-rotation/app/src/main/java:${project_path}/codelabs/textinput-keyboard/app/src/main/java:${project_path}/codelabs/mount-spec/app/src/main/java:${project_path}/codelabs/events/app/src/main/java:${project_path}/codelabs/group-section-lifecycle/app/src/main/java:${project_path}/litho-sections-core/src/main/java:${project_path}/sample-codelab/src/main/java:${project_path}/litho-sections-debug/src/main/java:${project_path}/litho-annotations/src/main/java:${project_path}/sample-barebones/src/main/java:${project_path}/litho-widget/src/main/java:${project_path}/litho-it/specs/src/main/java:${project_path}/litho-it/processor/src/main/java:${project_path}/litho-it/src/main/java:${project_path}/sample-barebones-kotlin/src/main/java:${project_path}/sample/src/main/java:${project_path}/lib/yoga/src/main/java:${project_path}/litho-espresso/src/main/java:${project_path}/litho-sections-annotations/src/main/java:${project_path}/litho-fresco/src/main/java:${project_path}/litho-sections-processor/src/main/java",
]
```

[Litho]: https://github.com/facebook/litho/
davidaurelio added a commit to davidaurelio/SublimeLinter-javac that referenced this pull request May 1, 2020
This adds `-cp` as an additional configuration option to configure the classpath for *javac.*

Per the discussion on SublimeLinter/SublimeLinter-clang#10 it became clear that it is preferred to *not* add extra configuration option beyond `args`. However, specifying a long list of paths for *javac* is tedious, as elements are colon-separated and thus cannot be individual elements in an `args` list.

This is completely optional, and offers better maintainability for users working on big projects.
Additionally, it allows to set general flags in the preferences of SublimeLinter, while still offering the possibility of setting custom paths for every project.

It is enough to offer `-cp`, as if `-sourcepath` or `-processorpath` are not specified, the classpath is searched for source files and annotation processors, respectively.

* * *

A comparison for [Litho][]:

```
// -cp
"-cp": [
  "${project_path}/litho-intellij-plugin/src/main/java",
  "${project_path}/litho-sections-widget/src/main/java",
  "${project_path}/litho-processor/src/main/java",
  "${project_path}/litho-rendercore/src/main/java",
  "${project_path}/litho-testing/src/main/java",
  "${project_path}/litho-instrumentation-tests/src/main/java",
  "${project_path}/litho-core/src/main/java",
  "${project_path}/codelabs/props/app/src/main/java",
  "${project_path}/codelabs/layout-spec/app/src/main/java",
  "${project_path}/codelabs/hello-world/app/src/main/java",
  "${project_path}/codelabs/hscroll-height/app/src/main/java",
  "${project_path}/codelabs/state/app/src/main/java",
  "${project_path}/codelabs/updating-ui/app/src/main/java",
  "${project_path}/codelabs/save-state-rotation/app/src/main/java",
  "${project_path}/codelabs/textinput-keyboard/app/src/main/java",
  "${project_path}/codelabs/mount-spec/app/src/main/java",
  "${project_path}/codelabs/events/app/src/main/java",
  "${project_path}/codelabs/group-section-lifecycle/app/src/main/java",
  "${project_path}/litho-sections-core/src/main/java",
  "${project_path}/sample-codelab/src/main/java",
  "${project_path}/litho-sections-debug/src/main/java",
  "${project_path}/litho-annotations/src/main/java",
  "${project_path}/sample-barebones/src/main/java",
  "${project_path}/litho-widget/src/main/java",
  "${project_path}/litho-it/specs/src/main/java",
  "${project_path}/litho-it/processor/src/main/java",
  "${project_path}/litho-it/src/main/java",
  "${project_path}/sample-barebones-kotlin/src/main/java",
  "${project_path}/sample/src/main/java",
  "${project_path}/lib/yoga/src/main/java",
  "${project_path}/litho-espresso/src/main/java",
  "${project_path}/litho-sections-annotations/src/main/java",
  "${project_path}/litho-fresco/src/main/java",
  "${project_path}/litho-sections-processor/src/main/java",
]

// args
"args": [
  "-sourcepath",
  "${project_path}/litho-intellij-plugin/src/main/java:${project_path}/litho-sections-widget/src/main/java:${project_path}/litho-processor/src/main/java:${project_path}/litho-rendercore/src/main/java:${project_path}/litho-testing/src/main/java:${project_path}/litho-instrumentation-tests/src/main/java:${project_path}/litho-core/src/main/java:${project_path}/codelabs/props/app/src/main/java:${project_path}/codelabs/layout-spec/app/src/main/java:${project_path}/codelabs/hello-world/app/src/main/java:${project_path}/codelabs/hscroll-height/app/src/main/java:${project_path}/codelabs/state/app/src/main/java:${project_path}/codelabs/updating-ui/app/src/main/java:${project_path}/codelabs/save-state-rotation/app/src/main/java:${project_path}/codelabs/textinput-keyboard/app/src/main/java:${project_path}/codelabs/mount-spec/app/src/main/java:${project_path}/codelabs/events/app/src/main/java:${project_path}/codelabs/group-section-lifecycle/app/src/main/java:${project_path}/litho-sections-core/src/main/java:${project_path}/sample-codelab/src/main/java:${project_path}/litho-sections-debug/src/main/java:${project_path}/litho-annotations/src/main/java:${project_path}/sample-barebones/src/main/java:${project_path}/litho-widget/src/main/java:${project_path}/litho-it/specs/src/main/java:${project_path}/litho-it/processor/src/main/java:${project_path}/litho-it/src/main/java:${project_path}/sample-barebones-kotlin/src/main/java:${project_path}/sample/src/main/java:${project_path}/lib/yoga/src/main/java:${project_path}/litho-espresso/src/main/java:${project_path}/litho-sections-annotations/src/main/java:${project_path}/litho-fresco/src/main/java:${project_path}/litho-sections-processor/src/main/java",
]
```

[Litho]: https://github.com/facebook/litho/
davidaurelio added a commit to davidaurelio/SublimeLinter-javac that referenced this pull request May 1, 2020
This adds `-cp` as an additional configuration option to configure the classpath for *javac.*

Per the discussion on SublimeLinter/SublimeLinter-clang#10 it became clear that it is preferred to *not* add extra configuration option beyond `args`. However, specifying a long list of paths for *javac* is tedious, as elements are colon-separated and thus cannot be individual elements in an `args` list.

This is completely optional, and offers better maintainability for users working on big projects.
Additionally, it allows to set general flags in the preferences of SublimeLinter, while still offering the possibility of setting custom paths for every project.

It is enough to offer `-cp`, as if `-sourcepath` or `-processorpath` are not specified, the classpath is searched for source files and annotation processors, respectively.

* * *

A comparison for [Litho][]:

```
// -cp
"-cp": [
  "${project_path}/litho-intellij-plugin/src/main/java",
  "${project_path}/litho-sections-widget/src/main/java",
  "${project_path}/litho-processor/src/main/java",
  "${project_path}/litho-rendercore/src/main/java",
  "${project_path}/litho-testing/src/main/java",
  "${project_path}/litho-instrumentation-tests/src/main/java",
  "${project_path}/litho-core/src/main/java",
  "${project_path}/codelabs/props/app/src/main/java",
  "${project_path}/codelabs/layout-spec/app/src/main/java",
  "${project_path}/codelabs/hello-world/app/src/main/java",
  "${project_path}/codelabs/hscroll-height/app/src/main/java",
  "${project_path}/codelabs/state/app/src/main/java",
  "${project_path}/codelabs/updating-ui/app/src/main/java",
  "${project_path}/codelabs/save-state-rotation/app/src/main/java",
  "${project_path}/codelabs/textinput-keyboard/app/src/main/java",
  "${project_path}/codelabs/mount-spec/app/src/main/java",
  "${project_path}/codelabs/events/app/src/main/java",
  "${project_path}/codelabs/group-section-lifecycle/app/src/main/java",
  "${project_path}/litho-sections-core/src/main/java",
  "${project_path}/sample-codelab/src/main/java",
  "${project_path}/litho-sections-debug/src/main/java",
  "${project_path}/litho-annotations/src/main/java",
  "${project_path}/sample-barebones/src/main/java",
  "${project_path}/litho-widget/src/main/java",
  "${project_path}/litho-it/specs/src/main/java",
  "${project_path}/litho-it/processor/src/main/java",
  "${project_path}/litho-it/src/main/java",
  "${project_path}/sample-barebones-kotlin/src/main/java",
  "${project_path}/sample/src/main/java",
  "${project_path}/lib/yoga/src/main/java",
  "${project_path}/litho-espresso/src/main/java",
  "${project_path}/litho-sections-annotations/src/main/java",
  "${project_path}/litho-fresco/src/main/java",
  "${project_path}/litho-sections-processor/src/main/java",
]

// args
"args": [
  "-sourcepath",
  "${project_path}/litho-intellij-plugin/src/main/java:${project_path}/litho-sections-widget/src/main/java:${project_path}/litho-processor/src/main/java:${project_path}/litho-rendercore/src/main/java:${project_path}/litho-testing/src/main/java:${project_path}/litho-instrumentation-tests/src/main/java:${project_path}/litho-core/src/main/java:${project_path}/codelabs/props/app/src/main/java:${project_path}/codelabs/layout-spec/app/src/main/java:${project_path}/codelabs/hello-world/app/src/main/java:${project_path}/codelabs/hscroll-height/app/src/main/java:${project_path}/codelabs/state/app/src/main/java:${project_path}/codelabs/updating-ui/app/src/main/java:${project_path}/codelabs/save-state-rotation/app/src/main/java:${project_path}/codelabs/textinput-keyboard/app/src/main/java:${project_path}/codelabs/mount-spec/app/src/main/java:${project_path}/codelabs/events/app/src/main/java:${project_path}/codelabs/group-section-lifecycle/app/src/main/java:${project_path}/litho-sections-core/src/main/java:${project_path}/sample-codelab/src/main/java:${project_path}/litho-sections-debug/src/main/java:${project_path}/litho-annotations/src/main/java:${project_path}/sample-barebones/src/main/java:${project_path}/litho-widget/src/main/java:${project_path}/litho-it/specs/src/main/java:${project_path}/litho-it/processor/src/main/java:${project_path}/litho-it/src/main/java:${project_path}/sample-barebones-kotlin/src/main/java:${project_path}/sample/src/main/java:${project_path}/lib/yoga/src/main/java:${project_path}/litho-espresso/src/main/java:${project_path}/litho-sections-annotations/src/main/java:${project_path}/litho-fresco/src/main/java:${project_path}/litho-sections-processor/src/main/java",
]
```

[Litho]: https://github.com/facebook/litho/
davidaurelio added a commit to davidaurelio/SublimeLinter-javac that referenced this pull request May 1, 2020
This adds `cp` as an additional configuration option to configure the classpath for *javac.*

Per the discussion on SublimeLinter/SublimeLinter-clang#10 it became clear that it is preferred to *not* add extra configuration option beyond `args`. However, specifying a long list of paths for *javac* is tedious, as elements are colon-separated and thus cannot be individual elements in an `args` list.

This is completely optional, and offers better maintainability for users working on big projects.
Additionally, it allows to set general flags in the preferences of SublimeLinter, while still offering the possibility of setting custom paths for every project.

It is enough to offer `cp`, because when `-sourcepath` or `-processorpath` are not specified, the classpath is searched for source files and annotation processors, respectively.

* * *

A comparison for [Litho][]:

```
// -cp
"cp": [
  "${project_path}/litho-intellij-plugin/src/main/java",
  "${project_path}/litho-sections-widget/src/main/java",
  "${project_path}/litho-processor/src/main/java",
  "${project_path}/litho-rendercore/src/main/java",
  "${project_path}/litho-testing/src/main/java",
  "${project_path}/litho-instrumentation-tests/src/main/java",
  "${project_path}/litho-core/src/main/java",
  "${project_path}/codelabs/props/app/src/main/java",
  "${project_path}/codelabs/layout-spec/app/src/main/java",
  "${project_path}/codelabs/hello-world/app/src/main/java",
  "${project_path}/codelabs/hscroll-height/app/src/main/java",
  "${project_path}/codelabs/state/app/src/main/java",
  "${project_path}/codelabs/updating-ui/app/src/main/java",
  "${project_path}/codelabs/save-state-rotation/app/src/main/java",
  "${project_path}/codelabs/textinput-keyboard/app/src/main/java",
  "${project_path}/codelabs/mount-spec/app/src/main/java",
  "${project_path}/codelabs/events/app/src/main/java",
  "${project_path}/codelabs/group-section-lifecycle/app/src/main/java",
  "${project_path}/litho-sections-core/src/main/java",
  "${project_path}/sample-codelab/src/main/java",
  "${project_path}/litho-sections-debug/src/main/java",
  "${project_path}/litho-annotations/src/main/java",
  "${project_path}/sample-barebones/src/main/java",
  "${project_path}/litho-widget/src/main/java",
  "${project_path}/litho-it/specs/src/main/java",
  "${project_path}/litho-it/processor/src/main/java",
  "${project_path}/litho-it/src/main/java",
  "${project_path}/sample-barebones-kotlin/src/main/java",
  "${project_path}/sample/src/main/java",
  "${project_path}/lib/yoga/src/main/java",
  "${project_path}/litho-espresso/src/main/java",
  "${project_path}/litho-sections-annotations/src/main/java",
  "${project_path}/litho-fresco/src/main/java",
  "${project_path}/litho-sections-processor/src/main/java",
]

// args
"args": [
  "-sourcepath",
  "${project_path}/litho-intellij-plugin/src/main/java:${project_path}/litho-sections-widget/src/main/java:${project_path}/litho-processor/src/main/java:${project_path}/litho-rendercore/src/main/java:${project_path}/litho-testing/src/main/java:${project_path}/litho-instrumentation-tests/src/main/java:${project_path}/litho-core/src/main/java:${project_path}/codelabs/props/app/src/main/java:${project_path}/codelabs/layout-spec/app/src/main/java:${project_path}/codelabs/hello-world/app/src/main/java:${project_path}/codelabs/hscroll-height/app/src/main/java:${project_path}/codelabs/state/app/src/main/java:${project_path}/codelabs/updating-ui/app/src/main/java:${project_path}/codelabs/save-state-rotation/app/src/main/java:${project_path}/codelabs/textinput-keyboard/app/src/main/java:${project_path}/codelabs/mount-spec/app/src/main/java:${project_path}/codelabs/events/app/src/main/java:${project_path}/codelabs/group-section-lifecycle/app/src/main/java:${project_path}/litho-sections-core/src/main/java:${project_path}/sample-codelab/src/main/java:${project_path}/litho-sections-debug/src/main/java:${project_path}/litho-annotations/src/main/java:${project_path}/sample-barebones/src/main/java:${project_path}/litho-widget/src/main/java:${project_path}/litho-it/specs/src/main/java:${project_path}/litho-it/processor/src/main/java:${project_path}/litho-it/src/main/java:${project_path}/sample-barebones-kotlin/src/main/java:${project_path}/sample/src/main/java:${project_path}/lib/yoga/src/main/java:${project_path}/litho-espresso/src/main/java:${project_path}/litho-sections-annotations/src/main/java:${project_path}/litho-fresco/src/main/java:${project_path}/litho-sections-processor/src/main/java",
]
```

[Litho]: https://github.com/facebook/litho/
davidaurelio added a commit to davidaurelio/SublimeLinter-javac that referenced this pull request May 2, 2020
This adds `cp` as an additional configuration option to configure the classpath for *javac.*

Per the discussion on SublimeLinter/SublimeLinter-clang#10 it became clear that it is preferred to *not* add extra configuration option beyond `args`. However, specifying a long list of paths for *javac* is tedious, as elements are colon-separated and thus cannot be individual elements in an `args` list.

This is completely optional, and offers better maintainability for users working on big projects.
Additionally, it allows to set general flags in the preferences of SublimeLinter, while still offering the possibility of setting custom paths for every project.

It is enough to offer `cp`, because when `-sourcepath` or `-processorpath` are not specified, the classpath is searched for source files and annotation processors, respectively.

* * *

A comparison for [Litho][]:

```
// -cp
"cp": [
  "${project_path}/litho-intellij-plugin/src/main/java",
  "${project_path}/litho-sections-widget/src/main/java",
  "${project_path}/litho-processor/src/main/java",
  "${project_path}/litho-rendercore/src/main/java",
  "${project_path}/litho-testing/src/main/java",
  "${project_path}/litho-instrumentation-tests/src/main/java",
  "${project_path}/litho-core/src/main/java",
  "${project_path}/codelabs/props/app/src/main/java",
  "${project_path}/codelabs/layout-spec/app/src/main/java",
  "${project_path}/codelabs/hello-world/app/src/main/java",
  "${project_path}/codelabs/hscroll-height/app/src/main/java",
  "${project_path}/codelabs/state/app/src/main/java",
  "${project_path}/codelabs/updating-ui/app/src/main/java",
  "${project_path}/codelabs/save-state-rotation/app/src/main/java",
  "${project_path}/codelabs/textinput-keyboard/app/src/main/java",
  "${project_path}/codelabs/mount-spec/app/src/main/java",
  "${project_path}/codelabs/events/app/src/main/java",
  "${project_path}/codelabs/group-section-lifecycle/app/src/main/java",
  "${project_path}/litho-sections-core/src/main/java",
  "${project_path}/sample-codelab/src/main/java",
  "${project_path}/litho-sections-debug/src/main/java",
  "${project_path}/litho-annotations/src/main/java",
  "${project_path}/sample-barebones/src/main/java",
  "${project_path}/litho-widget/src/main/java",
  "${project_path}/litho-it/specs/src/main/java",
  "${project_path}/litho-it/processor/src/main/java",
  "${project_path}/litho-it/src/main/java",
  "${project_path}/sample-barebones-kotlin/src/main/java",
  "${project_path}/sample/src/main/java",
  "${project_path}/lib/yoga/src/main/java",
  "${project_path}/litho-espresso/src/main/java",
  "${project_path}/litho-sections-annotations/src/main/java",
  "${project_path}/litho-fresco/src/main/java",
  "${project_path}/litho-sections-processor/src/main/java",
]

// args
"args": [
  "-sourcepath",
  "${project_path}/litho-intellij-plugin/src/main/java:${project_path}/litho-sections-widget/src/main/java:${project_path}/litho-processor/src/main/java:${project_path}/litho-rendercore/src/main/java:${project_path}/litho-testing/src/main/java:${project_path}/litho-instrumentation-tests/src/main/java:${project_path}/litho-core/src/main/java:${project_path}/codelabs/props/app/src/main/java:${project_path}/codelabs/layout-spec/app/src/main/java:${project_path}/codelabs/hello-world/app/src/main/java:${project_path}/codelabs/hscroll-height/app/src/main/java:${project_path}/codelabs/state/app/src/main/java:${project_path}/codelabs/updating-ui/app/src/main/java:${project_path}/codelabs/save-state-rotation/app/src/main/java:${project_path}/codelabs/textinput-keyboard/app/src/main/java:${project_path}/codelabs/mount-spec/app/src/main/java:${project_path}/codelabs/events/app/src/main/java:${project_path}/codelabs/group-section-lifecycle/app/src/main/java:${project_path}/litho-sections-core/src/main/java:${project_path}/sample-codelab/src/main/java:${project_path}/litho-sections-debug/src/main/java:${project_path}/litho-annotations/src/main/java:${project_path}/sample-barebones/src/main/java:${project_path}/litho-widget/src/main/java:${project_path}/litho-it/specs/src/main/java:${project_path}/litho-it/processor/src/main/java:${project_path}/litho-it/src/main/java:${project_path}/sample-barebones-kotlin/src/main/java:${project_path}/sample/src/main/java:${project_path}/lib/yoga/src/main/java:${project_path}/litho-espresso/src/main/java:${project_path}/litho-sections-annotations/src/main/java:${project_path}/litho-fresco/src/main/java:${project_path}/litho-sections-processor/src/main/java",
]
```

[Litho]: https://github.com/facebook/litho/
davidaurelio added a commit to davidaurelio/SublimeLinter-javac that referenced this pull request May 2, 2020
…ure *javac.*

Per the discussion on SublimeLinter/SublimeLinter-clang#10 it became clear that it is preferred to *not* add extra configuration option beyond `args`. However, specifying a long list of paths for *javac* is tedious, as elements are colon-separated and thus cannot be individual elements in an `args` list.

This is completely optional, and offers better maintainability for users working on big projects.
Additionally, it allows to set general flags in the preferences of SublimeLinter, while still offering the possibility of setting custom paths for every project.

It is enough to offer `classpath`. When `-sourcepath` or `-processorpath` are not specified, the classpath will be searched for source files and annotation processors, too.

* * *

A comparison for [Litho][]:

```
// classpath
"classpath": [
  "${project_path}/litho-intellij-plugin/src/main/java",
  "${project_path}/litho-sections-widget/src/main/java",
  "${project_path}/litho-processor/src/main/java",
  "${project_path}/litho-rendercore/src/main/java",
  "${project_path}/litho-testing/src/main/java",
  "${project_path}/litho-instrumentation-tests/src/main/java",
  "${project_path}/litho-core/src/main/java",
  "${project_path}/codelabs/props/app/src/main/java",
  "${project_path}/codelabs/layout-spec/app/src/main/java",
  "${project_path}/codelabs/hello-world/app/src/main/java",
  "${project_path}/codelabs/hscroll-height/app/src/main/java",
  "${project_path}/codelabs/state/app/src/main/java",
  "${project_path}/codelabs/updating-ui/app/src/main/java",
  "${project_path}/codelabs/save-state-rotation/app/src/main/java",
  "${project_path}/codelabs/textinput-keyboard/app/src/main/java",
  "${project_path}/codelabs/mount-spec/app/src/main/java",
  "${project_path}/codelabs/events/app/src/main/java",
  "${project_path}/codelabs/group-section-lifecycle/app/src/main/java",
  "${project_path}/litho-sections-core/src/main/java",
  "${project_path}/sample-codelab/src/main/java",
  "${project_path}/litho-sections-debug/src/main/java",
  "${project_path}/litho-annotations/src/main/java",
  "${project_path}/sample-barebones/src/main/java",
  "${project_path}/litho-widget/src/main/java",
  "${project_path}/litho-it/specs/src/main/java",
  "${project_path}/litho-it/processor/src/main/java",
  "${project_path}/litho-it/src/main/java",
  "${project_path}/sample-barebones-kotlin/src/main/java",
  "${project_path}/sample/src/main/java",
  "${project_path}/lib/yoga/src/main/java",
  "${project_path}/litho-espresso/src/main/java",
  "${project_path}/litho-sections-annotations/src/main/java",
  "${project_path}/litho-fresco/src/main/java",
  "${project_path}/litho-sections-processor/src/main/java",
]

// args
"args": [
  "-sourcepath",
  "${project_path}/litho-intellij-plugin/src/main/java:${project_path}/litho-sections-widget/src/main/java:${project_path}/litho-processor/src/main/java:${project_path}/litho-rendercore/src/main/java:${project_path}/litho-testing/src/main/java:${project_path}/litho-instrumentation-tests/src/main/java:${project_path}/litho-core/src/main/java:${project_path}/codelabs/props/app/src/main/java:${project_path}/codelabs/layout-spec/app/src/main/java:${project_path}/codelabs/hello-world/app/src/main/java:${project_path}/codelabs/hscroll-height/app/src/main/java:${project_path}/codelabs/state/app/src/main/java:${project_path}/codelabs/updating-ui/app/src/main/java:${project_path}/codelabs/save-state-rotation/app/src/main/java:${project_path}/codelabs/textinput-keyboard/app/src/main/java:${project_path}/codelabs/mount-spec/app/src/main/java:${project_path}/codelabs/events/app/src/main/java:${project_path}/codelabs/group-section-lifecycle/app/src/main/java:${project_path}/litho-sections-core/src/main/java:${project_path}/sample-codelab/src/main/java:${project_path}/litho-sections-debug/src/main/java:${project_path}/litho-annotations/src/main/java:${project_path}/sample-barebones/src/main/java:${project_path}/litho-widget/src/main/java:${project_path}/litho-it/specs/src/main/java:${project_path}/litho-it/processor/src/main/java:${project_path}/litho-it/src/main/java:${project_path}/sample-barebones-kotlin/src/main/java:${project_path}/sample/src/main/java:${project_path}/lib/yoga/src/main/java:${project_path}/litho-espresso/src/main/java:${project_path}/litho-sections-annotations/src/main/java:${project_path}/litho-fresco/src/main/java:${project_path}/litho-sections-processor/src/main/java",
]
```

[Litho]: https://github.com/facebook/litho/
@davidaurelio davidaurelio deleted the allow-isystem branch May 11, 2020 13:32
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Development

Successfully merging this pull request may close these issues.

2 participants